2015年10月29日木曜日

Unity 時間差をつけて音を鳴らす

Unityで時間差をつけて音を鳴らしたい場合のサンプルです。
MonoBehaviourを継承しているクラスから使用できます。
引数は(this、オーディオソース、待ち時間秒)です。

以下サンプル

  public void Jikansa(MonoBehaviour mb,AudioSource ad,float time) {
        //ループコルーチン
        mb.StartCoroutine(JikansaMati(ad,time));
    }
    private IEnumerator JikansaMati(AudioSource ad,float time) {
        yield return new WaitForSeconds(time);
        Narasu(ad);
        
    }
    private void Narasu(AudioSource ad){
        if (isMute == false) {
            ad.Play ();
        }
    }


MonoBehaviourを継承していないクラスからのStartCoroutine使用を想定しています。
UnityのオーディオソースはOnAudioSetPositionやOnAudioReadなどの開始や変更のコールバックはあるのですが、終了のコールバックがありません。
audio.clip.lengthをタイマーにしてコールバックの代わりに使うなど工夫が必要です。

0 件のコメント:

コメントを投稿