【Unity】 HTFramework框架(十四)Audio音频管理器

更新日期:2019年9月27日。
Github源码:[点我获取源码]

Audio音频管理器简介

Audio音频管理器负责全局音频的管理,在Audio中,音频被划分为四种类型:

1.背景音乐(特点:2D,长,重复,音量低,单一的)
背景音乐为单一的音乐,全局只能播放一个,当播放新的背景音乐时会覆盖旧的,且为2D模式,默认情况下,他的音量低于其他任何音频。
(多用于音量较低、重复的用来烘托场景气氛的背景音乐)

2.单通道音效(特点:2D,短,不重复,音量高,单一的)
单通道音效为单一的音效,全局只能播放一个,当播放新的单通道音效时会覆盖旧的,且为2D模式。
(多用于单一的不重复的音效,比如NPC说话,当同时只允许一个NPC说话时,新的NPC说话会覆盖旧的)

3.多通道音效(特点:2D,短,不重复,音量高,多元的)
多通道音效为多元的音效,全局能播放无限个,当播放新的多通道音效时不影响其他音效的播放,且为2D模式。
(多用于技能音效,UI音效等)

4.世界音效(特点:3D,长/短,可/不重复,音量高,多元的)
世界音效为多元的音效,全局能播放无限个,当播放新的世界音效时不影响其他音效的播放,且为3D模式。
(多用于3D背景音乐、3D技能音效、3D情景对白等)

使用Audio音频管理器

播放背景音乐

播放一段背景音乐将变得极其简单:

        //播放背景音乐 _bgMusic
        Main.m_Audio.PlayBackgroundMusic(_bgMusic);

        //暂停播放背景音乐,【true】以渐变方式停止音乐
        Main.m_Audio.PauseBackgroundMusic(true);

        //恢复播放背景音乐
        Main.m_Audio.UnPauseBackgroundMusic();

        //停止播放背景音乐
        Main.m_Audio.StopBackgroundMusic();

播放单通道音效

单通道音效类似于背景音乐,只不过他默认情况下是简短的不重复的,一闪即逝的音效:

        //播放单通道音效 _sound
        Main.m_Audio.PlaySingleSound(_sound);

        //暂停播放单通道音效,【true】以渐变方式停止音乐
        Main.m_Audio.PauseSingleSound();

        //恢复播放单通道音效
        Main.m_Audio.UnPauseSingleSound();

        //停止播放单通道音效
        Main.m_Audio.StopSingleSound();

播放多通道音效

多通道音效会循环利用AudioSource音源,所以不用担心会有多余的开销:

扫描二维码关注公众号,回复: 11430661 查看本文章
        //播放多通道音效
        Main.m_Audio.PlayMultipleSound(_attackSound);
        Main.m_Audio.PlayMultipleSound(_hitSound);
        Main.m_Audio.PlayMultipleSound(_screamSound);
        Main.m_Audio.PlayMultipleSound(_goldSound);
        Main.m_Audio.PlayMultipleSound(_goldSound);

        //停止播放指定的多通道音效,_goldSound
        Main.m_Audio.StopMultipleSound(_goldSound);

        //停止播放所有的多通道音效
        Main.m_Audio.StopAllMultipleSound();

播放世界音效

严格来说,世界音效是补充的3D多通道音效,其只支持3D模式播放音频,如果想要做3D的背景音乐,3D的技能音效等,都可以用世界音效,缺点是世界音效必须要依附到一个GameObject上,因为作为3D音效他必须要在3D世界中确定一个位置:

        //在 gameObject 上播放世界音效 _sound
        Main.m_Audio.PlayWorldSound(gameObject, _sound);

        //停止播放指定的世界音效
        Main.m_Audio.PauseWorldSound(gameObject);

        //停止播放所有的世界音效
        Main.m_Audio.StopAllWorldSound();

默认音量设置

可以在属性面板设置四种类型音频的音量及优先级:
在这里插入图片描述
想要关闭全部音频,除了依次停止四种类型的音频外,还可以调用全局静音的接口:

        //静音
        Main.m_Audio.Mute = true;

事件

目前只针对单通道音效有一个【播放结束】的事件,后续会根据情况添加更多的事件:

    private void Start()
	{
        //单通道音效播放结束
        Main.m_Audio.SingleSoundEndOfPlayEvent += OnSinglePlayEnd;

        Main.m_Audio.PlaySingleSound(_sound);
	}

    private void OnSinglePlayEnd()
    {
        GlobalTools.LogInfo(_sound.name + "Play End!");
    }

运行时检视面板

在编辑器中运行时将会出现运行时检视面板(Runtime Data),主要用以调试或数据监测,目前面板如下:
在这里插入图片描述
1.Mute:是否全局静音。
2.Background Audio:当前背景音乐属性。
3.Single Audio:当前单通道音效属性。
4.Multiple Audio:当前多通道音效属性。
5.World Audio:当前世界音效属性。

猜你喜欢

转载自blog.csdn.net/qq992817263/article/details/89874351
今日推荐