Unity引擎2D游戏开发,音源设置和音效播放
导入资源包
在Unity Assets Store当中,下载导入下面两个资源包到Unity中

在Unity中,下载导入到项目当中

新建一个文件夹,命名为Audio,将导入的两个文件夹放进来

挂载音效
打开Main Camera,能够发现该摄像机带有一个名为“Audio Listener”的组件

该组件用于监听音源发出的声音
当摄像机拥有监听组件时,只要摄像机的位置在音源播放的范围内,就能够捕捉到该声音
在Audio Manager上添加Audio Source组件,该组件用于播放BGM

Play On Awake:启动时播放,一般用于当作BGM时使用
Loop:循环
再添加一个Audio Source,用于播放音效,取消勾选Play On Awake

编写代码控制音效的播放
用代码去获取不同的Audio Source播放不同的片段
创建名为AudioManager的C#脚本

挂载到Audio Manager上

创建两个全局变量,用于挂在不同的Audio Source
// 背景音乐源
public AudioSource BGMSource;
// 音效源
public AudioSource FXSource;
将两个AudioSource拖入进行挂载

接下来以攻击为例,当Attack Area中任意一段启动的时候就需要播放音效,所以需要把音效挂载在它们之上。接着用它们去通知Audio Manager来播放需要执行的音效。因此,在这种跨物体传递的场景下,需要通过创建Event事件的方法,将需要的变量进行传递
新建一个PlayAudioEventSO C#脚本

在内部实现RaiseEvent()事件方法,由于需要传递AudioClip,所以UnityAction泛型写为AudioClip
using UnityEngine;
using UnityEngine.Events;
[CreateAssetMenu(menuName = "Event/PlayAudioEventSO")]
public class PlayAudioEventSO : ScriptableObject
{
    public UnityAction<AudioClip> OnEventRaised;
    public void RaiseEvent(AudioClip clip)
    {
        OnEventRaised?.Invoke(clip);
    }
}
在Events文件夹内,创建两个Event,分别为BGM Audio Event、FX Audio Event

接下来,需要在每一段攻击标记需要用哪一个Clip,并且还需要以事件的方式进行广播。因此,创建一个单独的代码,标记使用的音乐片段,命名为AudioDefiniton

创建三个全局变量
public PlayAudioEventSO playAudioEvent;
public AudioClip audioClip;
// 是否在启动时播放
public bool playOnEnable;
创建PlayAudioClip()方法用于执行音乐片段
public void PlayAudioClip()
{
    playAudioEvent.OnEventRaised(audioClip);
}
创建OnEnable()方法,判断在启动时进行播放
private void OnEnable()
{
    if (playOnEnable)
    {
        PlayAudioClip();
    }
}
将Attack1、2、3分别选中FX Audio Event和各自的音效Audio Clip。并勾选上Play On Enable,只要物件激活时就开始播放

那么这时候事件广播已经创建好,那么接下来就要做事件监听的任务
在AudioManager脚本中,添加两个事件监听的全局变量
[Header("事件监听")]
// 音效事件监听
public PlayAudioEventSO FXEvent;
// 背景音乐事件监听
public PlayAudioEventSO BGMEvent;
创建事件注册OnEnable()方法和注销OnDisable()方法的方法
private void OnEnable()
{
    FXEvent.OnEventRaised += OnFXEvent;
}
private void OnDisable()
{
    FXEvent.OnEventRaised -= OnFXEvent;
}
将传入的Clip赋值给AudioSource的Clip中,并执行Play()方法
private void OnFXEvent(AudioClip clip)
{
    FXSource.clip = clip;
    FXSource.Play();
}
设置好两个Event事件

此时,执行攻击动作就会有攻击的音效
同理,BGM的事件监听也写好
private void OnEnable()
{
    FXEvent.OnEventRaised += OnFXEvent;
    BGMEvent.OnEventRaised += OnFXEvent;
}
private void OnDisable()
{
    FXEvent.OnEventRaised -= OnFXEvent;
    BGMEvent.OnEventRaised -= OnBGMEvent;
}
private void OnBGMEvent(AudioClip clip)
{
    BGMSource.clip = clip;
    BGMSource.Play();
}
创建一个Empty Object,命名为BGM。绑定Audio Definition脚本,设置好组件和片段后,勾选Play On Enable

此时,开始游戏重新启用下该组件即可有BGM
音效混音轨道
打开Window菜单,选中Audio,点击Audio Mixer

与此同时,在Settings文件夹下,创建Audio Mixer文件,命名为Main Mixer

想要为每一种声音建立各自轨道,那么点击Groups旁边的加号生成一条音轨

在Audio Source中,点击Output即可选择刚才生成的音轨


 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号