示例#1
0
        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);
            }
        }
示例#2
0
    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);
        }
    }
示例#3
0
        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;
        }
示例#4
0
    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;
    }