タイムラインのオーディオトラックを使えば、ドラッグアンドドロップしたオーディオクリップを時間に沿って順に再生できますが、シグナルトラックを使って、決められたタイミングでランダムに選んだ音声を再生できるようにしてみました。
まずProjectにシグナルを新規作成して、タイムラインのシグナルトラックにドラッグアンドドロップしました。
このときにSignal Receiverコンポーネントが付いたオブジェクトをアタッチします。
このSignal ReceiverコンポーネントでAdd Reactionをクリックして、シグナルを選択し、+ボタンからイベントを登録します。
ここでリアクションにAudioSourceコンポーネントの付いたオブジェクトをアタッチすると、AudioSourceの再生メソッドなどを選択できます。
これで、タイムライン上のシグナルの時点でこのAudioSourceが再生されます。同様にオーディオクリップの変更などもできます。クリップの変更はEditor And Runtimeにしないとプレイボタンを押しても実行されませんでした。
今回は音声クリップをランダムに変えたいので、スクリプトを追加してそのためのパブリックなメソッドを作ります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ChangeClipTest : MonoBehaviour
{
[SerializeField] AudioClip[] audioClips;
AudioSource audioSource;
// Start is called before the first frame update
void Start()
{
audioSource = GetComponent<AudioSource>();
}
public void ChangeClipRandom()
{
audioSource.clip = audioClips[Random.Range(0, audioClips.Length)];
}
}
すると、シグナルレシーバーコンポーネントでこのメソッドを選択できるようになります。新しいシグナルを作って、タイムラインの最初のシグナルの前に置き、リアクションの設定をします。
このときはリアクションに今作ったスクリプトの付いたオブジェクトをアタッチします。
これでタイムラインを使ってランダムに音声クリップを変えて再生できました。