public void CrossFade(SFXHandle inClip, SFXHandle outClip, float fadeTime)
        {
            if (inClip == null || outClip == null)
            {
                return;
            }
            var coroutine = StartCoroutine(FadeCoroutine(inClip, outClip, fadeTime));

            inClip.FadeCoroutine  = coroutine;
            outClip.FadeCoroutine = coroutine;
        }
        IEnumerator FadeCoroutine(SFXHandle inClip, SFXHandle outClip, float fadeTime)
        {
            float remainingTime = fadeTime;
            float inClipTarget  = inClip.audioSource.volume;

            inClip.audioSource.volume = 0f;
            while (remainingTime >= 0f)
            {
                if (outClip != null)
                {
                    outClip.audioSource.volume = Mathf.Lerp(outClip.audioSource.volume, 0f, Time.unscaledDeltaTime / remainingTime);
                }
                if (inClip != null)
                {
                    inClip.audioSource.volume = Mathf.Lerp(inClip.audioSource.volume, inClipTarget, Time.unscaledDeltaTime / remainingTime);
                }
                remainingTime -= Time.unscaledDeltaTime;
                yield return(null);
            }
            if (outClip != null)
            {
                outClip.StopRightNow();
            }
        }