예제 #1
0
        public void CrossFadeTo(int target, float fadeInDurationOverride = -1, float fadeOutDurationOverride = -1)
        {
            StopAllCoroutines();

            if (_target == target)
            {
                return;
            }

            _target = target;

            for (int i = 0; i < _soundEventInstances.Count; i++)
            {
                int iCopy = i;

                void SetVolume(float volume)
                {
                    _soundEventInstances[iCopy].SetVolume(volume);
                }

                if (i == _target)
                {
                    float duration = fadeInDurationOverride != -1 ? fadeInDurationOverride : fadeInTime;

                    _soundEventInstances[i].Play(_soundEvent.audioClips[i]);
                    StartCoroutine(Coroutines.AsynchronousLerpValue(SetVolume, _soundEventInstances[i].GetVolume(), _soundEvent.minVolume, duration));
                }
                else
                {
                    float duration = fadeOutDurationOverride != -1 ? fadeOutDurationOverride : fadeOutTime;

                    _soundEventInstances[i].StopAfter(duration);
                    StartCoroutine(Coroutines.AsynchronousLerpValue(SetVolume, _soundEventInstances[i].GetVolume(), 0, duration));
                }
            }
        }