Unity выполнить условие, если объект finish активирован, тогда через 5 секунд скрыть объект finish и показать объекты kingBees и kingCoin без использования корутины.
В Unity, если вам нужно выполнить какое-либо условие через определенный промежуток времени, но без использования корутин, вы можете воспользоваться методом Update()
, чтобы отслеживать время. Вот пример кода, который выполняет ваши требования:
using UnityEngine;
public class GameController : MonoBehaviour
{
public GameObject finish; // Объект finish
public GameObject kingBees; // Объект kingBees
public GameObject kingCoin; // Объект kingCoin
private float timer; // Таймер для отслеживания времени
private bool isFinishActive; // Флаг, чтобы проверить, активен ли объект finish
void Update()
{
// Проверяем, активирован ли объект finish
if (finish.activeSelf)
{
isFinishActive = true; // Устанавливаем флаг, если finish активен
timer += Time.deltaTime; // Увеличиваем таймер на время, прошедшее с последнего кадра
// Проверяем, прошло ли 5 секунд
if (timer >= 5f)
{
HideFinishAndShowOthers(); // Вызываем метод для скрытия и показа объектов
}
}
else
{
// Если объект finish не активен, сбрасываем таймер и флаг
timer = 0f;
isFinishActive = false;
}
}
void HideFinishAndShowOthers()
{
finish.SetActive(false); // Скрываем объект finish
kingBees.SetActive(true); // Показываем объект kingBees
kingCoin.SetActive(true); // Показываем объект kingCoin
// Сбрасываем таймер и флаг
timer = 0f;
isFinishActive = false;
}
}
В этом коде мы используем метод Update()
для отслеживания времени, когда объект finish
активен. Если он активен, мы увеличиваем таймер. Как только таймер достигает 5 секунд, мы вызываем метод, который скрывает объект finish
и показывает объекты kingBees
и kingCoin
. Если объект finish
не активен, мы сбрасываем таймер.