в моей игре, когда игрок умирает, звучит умирающий звук, и как только звук заканчивается, сцена должна быть перезагружена, когда у пользователя все еще достаточно жизней.
До того, как у меня появился звук, пьеса мгновенно умерла после вызова функции death ():
public static void Death()
{
AddCoinScript.coinCounter = 0;
LivesScript.livesCounter--;
if (LivesScript.livesCounter > -1)//to get 0 live
{
Debug.Log("TIMER");
var currentScene = SceneManager.GetActiveScene();
SceneManager.LoadScene(currentScene.name);
}
else
{
//TO DO GameOver
}
}
Это работало как заклинание.Но теперь я добавил звук смерти.К сожалению, Unity не предоставляет обработчик событий для воспроизведения звука (я хочу, чтобы сцена перезагружалась не сразу, а после воспроизведения звука смерти), поэтому я решил взять это на себя, чтобы просто создатьтаймер.Таймер срабатывает сразу после смерти.Вот что эта функция стала:
public static void Death()
{
AddCoinScript.coinCounter = 0;
LivesScript.livesCounter--;
PlayDeathSound();
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = aSDeath.clip.length * 1000;
timer.Start();
timer.Elapsed += delegate
{
timer.Stop();
if (LivesScript.livesCounter > -1)//to get 0 live
{
Debug.Log("TIMER");
var currentScene = SceneManager.GetActiveScene();
SceneManager.LoadScene(currentScene.name);
}
else
{
//TO DO GameOver
}
};
}
Как вы можете видеть, чтобы убедиться, что таймер действительно срабатывает, я установил "debug.Log (" TIMER ")", чтобы увидеть, действительно ли онработает.И угадайте, что: это делает.Отладка теперь показывает «ТАЙМЕР» в своей консоли.Но вы знаете, что больше не работает?Две строки кода прямо под этим.
var currentScene = SceneManager.GetActiveScene();
SceneManager.LoadScene(currentScene.name);
Это те же самые строки, которые работали как раз перед тем, но когда они запускаются из таймера, они просто игнорируются?Как это вообще возможно?Когда я все это снова изменяю, это снова работает.Только когда таймер запускает две строки, они игнорируются.
Это совершенно странно или я что-то упустил?Спасибо!