Unity框架:JKFrame2.0学习笔记(十四)——声音系统(1)
  v5bEezpf7PPs 2023年11月02日 42 0

构成

主要由两部分构成

Unity框架:JKFrame2.0学习笔记(十四)——声音系统(1)_C#

AudioModule脚本主要是实现内部逻辑

AudioSystem脚本主要是为外部提供调用

实现

AudioModule

主要分为三部分:总音量,背景音乐,特效音乐

这个脚本会挂载到场景中,用了奥丁插件,来更好的编写inspector面板的界面

公开了几个变量,如图:

Unity框架:JKFrame2.0学习笔记(十四)——声音系统(1)_C#_02

特效的音乐是要用到对象池,因为有可能存在多个特效音乐,

包括一些音乐相关的方法

播放,暂停,恢复,停止  音乐等

关于特效的音乐:

播放器先从对象池中取出,不用的话再用对象池回收。

AudioSystem

主要是供外部调用的方法

注释给的也很详细,这块很简单,不复杂

 /// <summary>
        /// 播放背景音乐
        /// </summary>
        /// <param name="clip">音乐片段</param>
        /// <param name="loop">是否循环</param>
        /// <param name="volume">音量,-1代表不设置,采用当前音量</param>
        public static void PlayBGAudio(AudioClip clip, bool loop = true, float volume = -1)
            => audioModule.PlayBGAudio(clip, loop, volume);

        /// <summary>
        /// 使用音效数组播放背景音乐,自动循环
        /// </summary>
        public static void PlayBGAudioWithClips(AudioClip[] clips, float volume = -1)
            => audioModule.PlayBGAudioWithClips(clips, volume);

        /// <summary>
        /// 停止背景音乐
        /// </summary>
        public static void StopBGAudio() => audioModule.StopBGAudio();

        /// <summary>
        /// 暂停背景音乐
        /// </summary>
        public static void PauseBGAudio() => audioModule.PauseBGAudio();

        /// <summary>
        /// 继续播放背景音乐
        /// </summary>
        public static void UnPauseBGAudio() => audioModule.UnPauseBGAudio();

        /// <summary>
        /// 播放一次特效音乐,并且绑定在某个游戏物体身上
        /// 但是不用担心,游戏物体销毁时,会瞬间解除绑定,回收音效播放器
        /// </summary>
        /// <param name="clip">音效片段</param>
        /// <param name="autoReleaseClip">播放完毕时候自动回收audioClip</param>
        /// <param name="component">挂载组件</param>
        /// <param name="volumeScale">音量 0-1</param>
        /// <param name="is3d">是否3D</param>
        /// <param name="callBack">回调函数-在音乐播放完成后执行</param>
        public static void PlayOnShot(AudioClip clip, Component component = null, bool autoReleaseClip = false, float volumeScale = 1, bool is3d = true, Action callBack = null)
            => audioModule.PlayOnShot(clip, component, autoReleaseClip, volumeScale, is3d, callBack);

        /// <summary>
        /// 播放一次特效音乐
        /// </summary>
        /// <param name="clip">音效片段</param>
        /// <param name="position">播放的位置</param>
        /// <param name="autoReleaseClip">播放完毕时候自动回收audioClip</param>
        /// <param name="volumeScale">音量 0-1</param>
        /// <param name="is3d">是否3D</param>
        /// <param name="callBack">回调函数-在音乐播放完成后执行</param>
        public static void PlayOnShot(AudioClip clip, Vector3 position, bool autoReleaseClip = false, float volumeScale = 1, bool is3d = true, Action callBack = null)
            => audioModule.PlayOnShot(clip, position, autoReleaseClip, volumeScale, is3d, callBack);

总结

声音系统主要是把背景音乐,特效音乐做统一管理,利用对象池减少开销。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

v5bEezpf7PPs