#c# #unity3d
#c# #unity3d
Вопрос:
В моей игре у меня есть главное меню, через которое я запускаю новую игру (загружаю другую сцену) и выполняю сценарий ниже. Но когда я возвращаюсь в главное меню и снова запускаю новую игру, приведенный ниже сценарий не работает. Я попытался остановить сопрограмму внутри функции запуска, но это не помогло
private IEnumerator OpenCloseEyesAnimation()
{
if (!isOpenEyesAnimationStarted)
{
isOpenEyesAnimationStarted = true;
openCloseEyes.OpenCloseDoor(); // this work 1st and 2nd time
yield return new WaitForSeconds(6.0f); // this line don't work 2nd time
stepNumber ;
isOpenEyesAnimationStarted = false;
}
}
Я вызываю ее один раз внутри функции обновления
Комментарии:
1. Где вы вызываете эту функцию?
2. если вы открываете и закрываете меню с помощью -через 6 секунд, это не сработает (bool еще не был сброшен) вы уверены, что либо сбрасываете логическое значение при переходе в главное меню, ЛИБО ждете более 6 секунд, прежде чем перейти в главное меню?
3. @Nestoraj Я вызываю это в обновлении один раз
4. @ParadoxForge Строки перед WaitForSeconds работают, и я жду 6 секунд
5. @dima в первый И второй раз?
Ответ №1:
Вам нужно будет использовать StopCoroutine в нужном месте. Каждый раз, когда вы запускаете сопрограмму, сначала остановите ее.
private IEnumerator OpenCloseEyesAnimation()
{
if (!isOpenEyesAnimationStarted)
{
isOpenEyesAnimationStarted = true;
openCloseEyes.OpenCloseDoor();
yield return new WaitForSeconds(6.0f); // this line don't work after second launch
stepNumber ;
isOpenEyesAnimationStarted = false;
}
}
В качестве комментария (@Paradox Forge) Обновите свой код UpdateEvent:
case 3:
StopCoroutine(OpenCloseEyesAnimation());
isOpenEyesAnimationStarted = false;
StartCoroutine(OpenCloseEyesAnimation());
Комментарии:
1. это не сработает, если
isOpenEyesAnimationStarted
по-прежнему установлено значениеtrue
при вызове во второй раз2. нет, это не помогло, и isOpenEyesAnimationStarted = false . Строка перед WaitForSeconds работает во второй раз
3. @dima это помогло?
4. @MohammadFaizanKhan извините, я попробую через несколько минут
5. Когда я включил меню паузы для перехода в главное меню, я установил Time.timeScale = 0. И это было == 0 после второго запуска. Это была проблема)