Unity中立体声平移的应用

实现的效果

        若从左声道开始,播放效果逐渐从左声道过渡到右声道,再从右声道过渡到左声道,具体效果请戴上耳机播放下列视频。

StereoPanning

代码实现

public class AudioInfo
{
    [HideInInspector] public float[] StereoTranslationValues;//立体声平移过渡值集合
    [HideInInspector] public float StereoTimeSpan;//立体声平移过渡值时间片
    [HideInInspector] public AudioSource mSource;//音频源组件
    public bool StereoTranslation;//是否开启立体声平移过渡

    //立体声平移过渡协程
    public IEnumerator StereoPanTranslation()
    {
        int currentIndex = 0;
        while (true)
        {
            if (mSource == null || !StereoTranslation || StereoTranslationValues == null || StereoTranslationValues?.Length == 0 || StereoTimeSpan <= 0) yield break;
            mSource.panStereo = StereoTranslationValues[currentIndex];
            yield return new WaitForSeconds(StereoTimeSpan);
            currentIndex = (currentIndex + 1) % StereoTranslationValues.Length;
            if (currentIndex == 0) StereoTranslationValues = StereoTranslationValues.Reverse().ToArray();
        }
    }
}

代码解说

        上述代码仅为AudioInfo这个类的一部分,主要涉及立体声平移的属性和方法,立体声平移过渡的效果由协程StereoPanTransition实现,首先进行一个非法判断,然后修改立体声平移过渡值,每修改一次等待一个时间片,然后更新当前索引,每当当前索引为0时则反转立体声平移过渡值的集合。

        调用方法很简单,只需要设置好四个属性,并启动协程即可。

如果这篇文章对你有帮助,请给作者点个赞吧!

你可能感兴趣的:(Unity开发,unity,音效)