@AlxWanderer

После нажатия Play нужно чтобы игра была на паузе и после 5 секунд(обратный счетчик) игра стартовала, как это сделать?

После нажатия Play нужно чтобы игра была на паузе и после 5 секунд(обратный счетчик) игра стартовала, как это сделать?
Вот скрит, он отщитывает, но игра идет, как это исправить?
public int timeLeft = 5;
    public Text countdownText;

    // Use this for initialization
    void Start()
    {
        StartCoroutine("LoseTime");
    }

    // Update is called once per frame
    void Update()
    {
        countdownText.text = ("" + timeLeft);

        if (timeLeft <= 0)
        {
            StopCoroutine("");
            countdownText.text = "";
        }
    }

    IEnumerator LoseTime()
    {
        while (true)
        {
            yield return new WaitForSeconds(1);
            timeLeft--;
        }
    }
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 3
@AlxWanderer Автор вопроса
Пробовал через Time.timeScale, но возникает проблема что встает весь уровень, включая и таймер!
Ответ написан
flexer1992
@flexer1992
Unity Developer
можно попробовать что-то подобное.
private int _timeLeft = 5;
public Text countdownText;
private float _currentTime;

void Start()
{
    _currentTime = _timeLeft;
}

void Update()
{
    _currentTime -= Time.deltaTime;   
    countdownText.text = (int)_currentTime.ToString());    
    if(_currentTime <= 0)    
    {
        Debug.Log("StartGame");
    }
}
Ответ написан
@Brown2Fox
В ScriptsExecutionOrder выставляете самый высокий приоритет этому скрипту, а далее проверяете переменную IsStarted другим скриптом (скажем глобальным геймменеджером, который инициализирует всякие штуки для игры)

public class DelayedStart: MonoBehaviour
{

public int count = 5;
public static bool IsStarted = false;

void Awake()
{
    StartCoroutine(StartCounting());
}

private IEnumerator StartCounting()
{
    for (int i = count; i > 0; i--)
    {
         yield return new WaitForSeconds(1f);
         Debug.LogFormat("Time Left: {0} s", i);
    }
    IsStarted = true;
}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы