Загрузка данных


using UnityEngine;

public class Interactable : MonoBehaviour
{
    public enum Type { PickUp, Door, Battery } // Типы предметов
    [Header("Настройки предмета")]
    public Type objectType; 

    [Header("Для дверей (если тип Door)")]
    public bool isClosed = true;
    public float openAngle = 90f;

    [Header("Для батареек (если тип Battery)")]
    public float energyRestore = 30f; // Сколько % добавит батарейка

    public void Activate(GameObject player)
    {
        if (objectType == Type.PickUp)
        {
            if (player.TryGetComponent(out PickUpSystem pickup)) pickup.GrabObject(gameObject);
        }
        else if (objectType == Type.Door)
        {
            isClosed = !isClosed;
            float targetAngle = isClosed ? 0f : openAngle;
            transform.localRotation = Quaternion.Euler(0f, targetAngle, 0f);
            if (TryGetComponent(out AudioSource audio)) audio.Play();
        }
        // НАДЕЖНЫЙ СБОР БАТАРЕЙКИ:
        else if (objectType == Type.Battery)
        {
            // Напрямую ищем фонарик на сцене
            PhysicalFlashlight flashlight = FindObjectOfType<PhysicalFlashlight>();
            if (flashlight != null)
            {
                flashlight.Recharge(energyRestore); // Заряжаем
                Destroy(gameObject); // Исчезает с пола
            }
            else
            {
                Debug.LogError("Не удалось найти фонарик на сцене! Проверьте, есть ли на нем скрипт PhysicalFlashlight");
            }
        }
    }
}