IEnumerator Fade(MasterVolumeAudioSource source, float toVolume, float timeSeconds, float volume) { var startTime = Time.time; var startVolume = source.Volume; while (true) { var spentTime = Time.time - startTime; var t = spentTime / timeSeconds; if (t >= 1.0f) { //source.Volume = toVolume; source.Volume = volume; if (volume == 0.0f) { source.Source.Stop(); } yield break; } source.Volume = Mathf.Lerp(startVolume, toVolume, t); yield return(null); } }
IEnumerator Fade(MasterVolumeAudioSource source, float toVolume, float timeSeconds) { var startTime = Time.time; var startVolume = source.Volume; while (true) { var spentTime = Time.time - startTime; var t = spentTime / timeSeconds; if (t >= 1.0f) { source.Volume = toVolume; if (Mathf.Approximately(toVolume, 0.0f)) { // ループ解除 // NOTE 解除しないと再生用のハンドルが再利用できない source.Source.loop = false; } yield break; } source.Volume = Mathf.Lerp(startVolume, toVolume, t); yield return(null); } }
void Awake() { for (var i = 0; i < 2; i++) { var audioSource = gameObject.AddComponent <AudioSource>(); audioSources[i] = new MasterVolumeAudioSource() { Source = audioSource, GetMasterVolume = () => Volume, }; } MasterVolume = 1.0f; }
void Awake() { for (var i = 0; i < MAX_SE; i++) { // 3Dサウンド用に子供を作成 var obj = new GameObject("SE"); obj.transform.SetParent(transform); var audioSource = obj.AddComponent <AudioSource>(); audioSources[i] = new MasterVolumeAudioSource() { Source = audioSource, Transform = obj.transform, GetMasterVolume = () => Volume, }; } MasterVolume = 1.0f; }