Когда игрок умирает, один индикатор здоровья отключается, и запускается таймер обратного отсчета, который длится 5 минут, а затем индикатор снова активируется.
Как отобразить таймер на разных сценах, чтобы у игрока был индикатор, чтобы увидеть, когда у него снова будут жизни, чтобы повторить попытку?Есть ли способ найти новый текстовый объект, когда сцена перезагружается или изменяется на другую сцену?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TimerText : MonoBehaviour
{
public static TimerText instance;
private Text timeText;
[SerializeField]
public GameObject heart;
private float time;
private void Awake()
{
MakeSingleton();
}
// Start is called before the first frame update
void Start()
{
timeText = GameObject.Find("/Canvas/Resource_Life/Resource_Base /Timer").GetComponent<Text>(); ;
}
// Update is called once per frame
void Update()
{
if(heart.activeSelf == false && timeText.text == "<color=white>00:00</color>")
{
StartCoundownTimer();
}
}
public void MakeSingleton()
{
if (instance != null)
{
Destroy(gameObject);
}
else
{
instance = this;
DontDestroyOnLoad(gameObject);
}
}
void StartCoundownTimer()
{
if (timeText != null)
{
time = 300;
timeText.text = "00:00";
InvokeRepeating("UpdateTimer", 0.0f, 0.01667f);
}
}
void UpdateTimer()
{
if (timeText != null)
{
time -= Time.deltaTime;
string minutes = Mathf.Floor(time / 60).ToString("00");
string seconds = (time % 60).ToString("00");
timeText.text = minutes + ":" + seconds;
if (minutes == "00" && seconds == "00")
{
heart.SetActive(true);
}
}
}
}
Таймер обратного отсчета должен продолжаться и отображаться в новом текстовом объекте, который создается, если сценаперезагружен или изменен, вместо сообщения об ошибке «GameObject был уничтожен».