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


using UnityEngine;
using TMPro;

public class PhysicalFlashlight : MonoBehaviour
{
    public Light flashlightLight; 
    public TextMeshProUGUI batteryText; // Теперь поле публичное, перетащим сюда текст руками
    
    [Header("Настройки батареи")]
    public float maxEnergy = 100f;
    public float currentEnergy = 100f;
    public float drainRate = 4f; 

    private bool isLightOn = false;
    [HideInInspector] public bool isGrabbed = false; 

    void Start()
    {
        if (flashlightLight != null) flashlightLight.enabled = false;
        currentEnergy = maxEnergy;
        UpdateUI();
    }

    void Update()
    {
        // Показываем или скрываем текст процентов в зависимости от того, в руках ли фонарик
        if (batteryText != null)
        {
            batteryText.gameObject.SetActive(isGrabbed);
        }

        if (isGrabbed && Input.GetKeyDown(KeyCode.F) && currentEnergy > 0)
        {
            isLightOn = !isLightOn;
            if (flashlightLight != null) flashlightLight.enabled = isLightOn;
        }

        if (isLightOn && isGrabbed)
        {
            currentEnergy -= drainRate * Time.deltaTime;
            currentEnergy = Mathf.Clamp(currentEnergy, 0f, maxEnergy);
            UpdateUI();

            if (currentEnergy <= 0)
            {
                isLightOn = false;
                if (flashlightLight != null) flashlightLight.enabled = false;
            }
        }
    }

    void UpdateUI()
    {
        if (batteryText != null)
        {
            batteryText.text = "Фонарик: " + Mathf.CeilToInt(currentEnergy) + "%";
        }
    }

    public void Recharge(float amount)
    {
        currentEnergy += amount;
        currentEnergy = Mathf.Clamp(currentEnergy, 0f, maxEnergy);
        UpdateUI();
    }
}