2016-07-16 3 views
1

Я хотел бы спросить, есть ли возможность отложить загрузку уровня после того, как мой персонаж умрет в игре. Я использую следующий код:Application.LoadLevel() с задержкой в ​​Unity

void Update() { 
    if (health.currentVal <= 0) 
     Die(); 
    } 
    void Die(){ 
     Application.LoadLevel (Application.loadedLevel); 
    } 

Это в основном возрождение моей сцены, но я хотел бы добавить звук и задержать, если это возможно.

Благодарим за помощь.

ответ

1

Вы можете использовать Invoke и ждать 5 секунд.

Invoke("Die",5); 

Вы также можете использовать сопрограммная

IEnumerator waitRestart() 
{ 
    yield return new WaitForSeconds(5); //Wait for 5 secs 
    Die(); 
} 

затем вызвать его с StartCoroutine(waitRestart());.

+0

Отлично, отлично работает. Можно ли также заморозить или отключить движение объекта «игрок», пока мы ждем, пока мы не перезапустим игру? Новая проблема заключается в том, что я все еще могу перемещать игрока, пока он «мертв». –

+0

@ TomášTomHaverla да. Создайте boolean varaible и используйте его, чтобы определить, когда игрок мертв. Например, 'bool isDead;' затем в вашем коде перемещения убедитесь, что игрок не умер, прежде чем перемещать плеер. Вы можете проверить это с помощью 'if (! IsDead) {// Поместите здесь код перемещения};'. «!» означает не мертвый. Кроме того, прежде чем вы вызовете 'Invoke (« Die », 5);', make 'isDead' должен быть« истинным », когда игрок умирает, выполняя' isDead = true; '. Если у вас все еще есть вопрос об этом, создайте новый вопрос, так как это совершенно другая проблема. Не забудьте принять этот ответ, так как вы его заработали. – Programmer

0

Звоните с Invoke(). Второй параметр - это временная задержка в секундах.

void Update() 
    { 
    if (health.currentVal <= 0) 
    { 
     Invoke("Die", 3f); 
    }  
    } 
Смежные вопросы