2016-06-25 16 views
0

Unityでプログラミングを始めたばかりですが、私がやりたいことは、ゲームを開始してから5秒後に再生するようにオーディオクリップを遅らせることです。Unityでオーディオクリップをどのように遅延させるのですか?

私はオンラインで検索してこのコードを見つけましたが、実行すると音がありません。

using UnityEngine; 
using System.Collections; 

public class WizardVoice : MonoBehaviour { 
    public AudioSource myAudio; 
    // Use this for initialization 
    void Start() { 

     StartCoroutine(PlaySoundAfterDelay(myAudio, 300.0f)); 
    } 

    // Update is called once per frame 
    void Update() { 

    } 

    IEnumerator PlaySoundAfterDelay(AudioSource audioSource, float delay) 
    { 
     if (audioSource == null) 
      yield break; 
     yield return new WaitForSeconds(delay); 
     audioSource.Play(); 
    } 

} 

私は私が間違っていた何かを見つけるしようとしているが、任意の運を持っていませんよ。どんな助けもありがとう!

ありがとうございました!

+0

コードは正常です。 'if(audioSource == null)を置き換えます。 yield break; 新しいWaitForSeconds(遅延)を返します。 audioSource.Play(); 'if(audioSource == null){ Debug.Log(" Null "); yield break;} else { Debug.Log( "Not Null"); 新しいWaitForSeconds(遅延)を返します。 audioSource.Play();} 'コンソールのタブに何が表示されたかを教えてください。 – Programmer

+0

返事をありがとう。それは言う:NOT NULL UnityEngine.Debug:ログ(オブジェクト) c__Iterator0:MoveNextメソッド()(資産/声/ WizardVoice.csで:20) UnityEngine.MonoBehaviour:StartCoroutine(IEnumeratorを) WizardVoice:スタート() (Assets/Voices/WizardVoice.cs:9) しかし、音声は再生されませんでした。 –

+0

それは変です。どのような統一版?また、別のプログラムでオーディオを開いて再生するようにしてください。それは音楽か短い音効果ですか? – Programmer

答えて

0

300.0fから5000fに変更します.300.0fは300ミリ秒であり、5秒ではないためです。 1000f = 1秒。 5秒には5000fを使用してください。これはWaitForSeconds();の動作です。

関連する問題