2015-01-21 59 views
0

我如何等待if语句?我需要时间让音频文件播放。Unity内部如果声明

void OnTriggerEnter2D(Collider2D other) 
{ 
    if (other.gameObject.tag == "Player") 
    { 
     audio.Play(); 
     // yield return new WaitForSeconds(.5f); 
     gameObject.SetActive(false); 
    } 
} 

回答

0

你可以做一些非常喜欢这个“狡猾”:

void OnTriggerEnter2D(Collider2D other) 
    { 
     if (other.gameObject.tag == "Player") 
     { 
      audio.Play(); 
      float timer = 0; 
      do{timer += Time.deltaTime;}while(timer != 1) 
      gameObject.SetActive(false); 
     } 
    } 

但我会建议你实际上在你的更新循环的东西,如跟踪您的音频进度:

if (!audio.isPlaying) { //Audio playing } 

if(audio.time > 1) { //Audio has been playing for more than one second } 

希望这有助于。

忘了链接...

audio.isPlaying = http://docs.unity3d.com/ScriptReference/AudioSource-isPlaying.html

audio.time = http://docs.unity3d.com/ScriptReference/AudioSource-time.html

+0

感谢: “如果(!audio.isPlaying)” 引用当前游戏对象或所有音频剂量? fyi我刚开始学习uniy和c#,如果你想看到进展它的@ deathvenomstudios.com – DeathVenom 2015-01-21 04:25:09

+0

它没有引用所有的音频。 (我添加了一些链接,这可能也有帮助) – Zze 2015-01-21 04:50:13