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


using UnityEngine;
using TMPro; // Подключаем текст

public class PhysicalFlashlight : MonoBehaviour
{
    public Light flashlightLight; 
    private 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;

        // Автоматически находим текстовый объект на экране по его имени
        GameObject textObj = GameObject.Find("BatteryText");
        if (textObj != null) batteryText = textObj.GetComponent<TextMeshProUGUI>();
    }

    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();
    }
}