/// <summary> 指定した <see cref="ClipIndex"/> に対応した /// <see cref="AudioClip"/> を使って再生する </summary> /// <param name="volume"> 音量(0.0 ~ 1.0) </param> /// <param name="isLoop"> true = ループ再生を許可 </param> public void Play(ClipIndex index, float volume, bool isLoop) { // まだ割り当てられていなければ割り当てる if (!source) { Bind(); } // AudioSource の取得を試みる AudioSource freeSource = null; var result = source.GetSource(out freeSource); if (!result && isAdditive) { freeSource = source.AddSource(); } // 取得できなければ何もしない if (!freeSource) { return; } freeSource.clip = index.GetClip(); freeSource.volume = volume; freeSource.loop = isLoop; freeSource.Play(); // 自身の状態を利用して解放処理を開始する AutoRelease(_autoRelease); }
/// <summary> 指定したクリップを再生、その再生が終了するまでコルーチンを停止 </summary> protected IEnumerator WaitForEndOfSE(ClipIndex clip) { audio.Play(clip); while (audio.source.IsPlaying()) { yield return(null); } }
/// <summary> 指定した <see cref="ClipIndex"/> に対応した /// <see cref="AudioClip"/> を使って再生する /// <para> 音量は最大、ループ再生はしない </para></summary> public void Play(ClipIndex index) { Play(index, 1f, false); }
/// <summary> 指定した <see cref="ClipIndex"/> に対応した /// <see cref="AudioClip"/> を使って再生する /// <para> 音量は最大設定にする </para></summary> /// <param name="isLoop"> true = ループ再生を許可 </param> public void Play(ClipIndex index, bool isLoop) { Play(index, 1f, isLoop); }
/// <summary> 指定した <see cref="ClipIndex"/> に対応した /// <see cref="AudioClip"/> を使って再生する /// <para> ループ再生はしない </para></summary> /// <param name="volume"> 音量(0.0 ~ 1.0) </param> public void Play(ClipIndex index, float volume) { Play(index, volume, false); }
/// <summary> 同じ名前の <see cref="AudioClip"/> を取得 </summary> public static AudioClip GetClip(this ClipIndex index) { return(_clips.First(clip => Regex.IsMatch(clip.name, index.clipName))); }