Unity AudioMixer 之 Mixer使用及统一管理音量

  • 原创
  • |
  • 浏览:4694
  • |
  • 更新:

Unity AudioMixer 之 Mixer使用及统一管理音量。在Unity中, Audio Mixer 基本使用,以及通过使用 Audio Mixer 统一管理游戏场景中的音量调节的案例,具体方法如下

Unity AudioMixer 之 Mixer使用及统一管理音量
Unity AudioMixer 之 Mixer使用及统一管理音量

工具/原料

  • Unity
  • Audio Mixer

方法/步骤

  1. 1

    打开 Unity,新建一个空工程,然后向工程导入一些音频文件,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
    Unity AudioMixer 之 Mixer使用及统一管理音量
  2. 2

    在场景中,新建GameObject,修改名字为 BackgroundMusic,并添加一个 AudioSource,勾选 Loop,然后把 BackgroundMusic 音频文件赋值上去,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
  3. 3

    同理新建 SoundEffect_One,和 SoundEffect_Two,添加 AudioSource,取消勾选 Play On Awake,并把对应音频赋值上去,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
    Unity AudioMixer 之 Mixer使用及统一管理音量
  4. 4

    在工程中新建脚本 PlaySoundEffect_One,用来监控按下 E 键,播放 SoundEffect_One 音效,并把脚本挂载到场景中的 SoundEffect_One 游戏物体上 ,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
    Unity AudioMixer 之 Mixer使用及统一管理音量
    Unity AudioMixer 之 Mixer使用及统一管理音量
  5. 5

    PlaySoundEffect_One 脚本具体内容如下:

    using UnityEngine;

     

    public class PlaySoundEffect_One : MonoBehaviour

    {

        // 音频源组件参数

        private AudioSource audioSource;

     

        void Start()

        {

            // 获取音频源组件

            audioSource = GetComponent<AudioSource>();

        }

     

        void Update()

        {

            // 监控按下 E 键,进行特效音的播放

            if (Input.GetKeyDown(KeyCode.E))

            {

                audioSource.Play();    

            }

        }

    }

  6. 6

    同理新建 脚本 PlaySoundEffect_Two,按下 Q 键播放 SoundEffect_Two 音频,并把脚本挂载到 到场景中的 SoundEffect_Two 游戏物体上,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
    Unity AudioMixer 之 Mixer使用及统一管理音量
    Unity AudioMixer 之 Mixer使用及统一管理音量
  7. 7

    PlaySoundEffect_Two 脚本具体内容如下:

    using UnityEngine;

     

    public class PlaySoundEffect_Two : MonoBehaviour

    {

        // 音频源组件参数

        private AudioSource audioSource;

     

        void Start()

        {

            // 获取音频源组件

            audioSource = GetComponent<AudioSource>();

        }

     

        void Update()

        {

            // 监控按下 Q 键,进行特效音的播放

            if (Input.GetKeyDown(KeyCode.Q))

            {

                audioSource.Play();

            }

        }

    }

  8. 8

    然后运行场景,背景音乐正常播放,分别按下 Q 或者 E,对应播放音效,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
  9. 9

    在场景中添加UI,用来控制音量的调节,具体的UI布局如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
  10. 10

    然后在工程中右键 Create -- Audio Mixer,然后创建一个 Audio Mixer ,修改名称为 MasterMixer,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
  11. 11

    双击 MasterMixer,显示 Mixer 编辑窗口,然后点击 “Group”后面的 “+”,添加两个组,分别命名为 BackgroundMusic 和 SoundEffect,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
  12. 12

    接着把 MasterMixer 中新添加的  BackgroundMusic 和 SoundEffect 组,分别赋值给场景中的 BackgroundMusic 和 SoundEffect 游戏物体的 AudioSource 中的 output,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
    Unity AudioMixer 之 Mixer使用及统一管理音量
  13. 12
    本页面未经授权抓取自百度经验
  14. 13

    选中 MasterMixer 中的 Master,在 Inspector 中的 Attenuation 中的 Volume 右键 勾选 Expose ‘Volume(of Master)’to script,把 Master 音量调节的参数暴露出来,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
  15. 14

    然后点击 Audio Mixer 的编辑面板上的 Exposed Parameters ,就会看到之前 Expose 的参数,右键 Rename,命名为 “MasterVolume”,便于后期代码控制,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
    Unity AudioMixer 之 Mixer使用及统一管理音量
  16. 15

    同理把 MasterMixer 中的 BackgroundMusic 和 SoundEffect 中的同样暴露Volume,并且重新命名,结果如下

    Unity AudioMixer 之 Mixer使用及统一管理音量
  17. 16

    在工程中新建脚本 AudioMixerManager,用来控制之前暴露出来的 Volume 参数,通过脚本,调节音量大小,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
    Unity AudioMixer 之 Mixer使用及统一管理音量
    Unity AudioMixer 之 Mixer使用及统一管理音量
  18. 17

    AudioMixerManager 脚本的具体内容如下:

    using UnityEngine;

    using UnityEngine.Audio;

     

    public class AudioMixerManager : MonoBehaviour

    {

        // 进行控制的Mixer变量

        public AudioMixer audioMixer;

     

        /// <summary>

        /// 控制主音量的函数

        /// </summary>

        /// <param name="volume"></param>

        public void SetMasterVolume(float volume)    

        {

            // MasterVolume为我们暴露出来的Master的参数

            audioMixer.SetFloat("MasterVolume", volume);

            

        }

     

        /// <summary>

        /// 控制背景音乐音量的函数

        /// </summary>

        /// <param name="volume"></param>

        public void SetBackgroundMusicVolume(float volume)    

        {

            // MusicVolume为我们暴露出来的Music的参数

            audioMixer.SetFloat("BackgroundMusicVolume", volume);

            

        }

     

        /// <summary>

        /// 控制音效音量的函数

        /// </summary>

        /// <param name="volume"></param>

        public void SetSoundEffectVolume(float volume)    

        {

            // SoundEffectVolume为我们暴露出来的SoundEffect的参数

            audioMixer.SetFloat("SoundEffectVolume", volume);

            

        }

    }

  19. 18

    脚本编译正确后,回到 Unity,然后在场景中,新建 GameObject,把脚本 AudioMixerManager 挂载上去,把 MasterMixer 进行赋值,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
  20. 19

    然后把 UI 中的Master、BackgroundMusic、SoundEffect 对应调节Slider添加事件,分别添加 SetMasterVolume 、SetBackgroundMusicVolume、SetSoundEffectVolume 函数接口事件,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
  21. 20

    由于 AudioMixer 的音量调节的数值为 -80,20,所以对应的 UI 中的Master、BackgroundMusic、SoundEffect 的调节Slider 的 Min Value 和 Max Value 分别调整为 -80,20,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
  22. 21

    运行场景,这样就可以通过调节对应的Slider 进行音量大小的调节了,具体如下图

    Unity AudioMixer 之 Mixer使用及统一管理音量
    END

注意事项

  • 您的支持,是我们不断坚持知识分享的动力,若帮到您,还请帮忙投票有得;若有疑问,请留言
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部