UnityでCoroutineを利用する際のメモ
IEnumeratorに参照を入れてコルーチンを一時停止・再開させるとき
- 入れ子呼び出しは再開されない
- WaitForSecondsは内部でカウントが止まらない。
一時停止・再開できるサウンド再生完了コールバック
AudioSourceExtention.cs
public static IEnumerator PlayWithCompCallback(this AudioSource audioSource, AudioClip audioClip, float volume = 1f, UnityAction compCallback = null)
{
audioSource.clip = audioClip;
audioSource.volume = volume;
audioSource.Play();
float timer = 0f;
//WaitForSecondsを使うとCoroutineを一時停止・再開できなくなるのでwhileで対応//
while (timer < audioClip.length)
{
timer += Time.deltaTime;
yield return null;
}
if (compCallback != null)
{
compCallback();
}
}