音效
1.添加音效节点
将Sound Effects文件夹下的所有音效资源,拖到场景中
新建空节点AudioManager,将所有音效拖到AudioManager下,成为子节点
设置所有音效Play On Awake为false
2.新建脚本AudioManager.cs,添加组件到AudioManager节点
制作单例
public static AudioManager sInstance;
private void Awake()
{
sInstance = this;
}
添加音效参数数组,并分别指向添加的所有音效
//音效
public AudioSource[] soundEffects;
添加播放音效函数
//播放音效
public void playSFX(int soundToPlay)
{
soundEffects[soundToPlay].Stop();
//设置音效范围,使更有游戏感
soundEffects[soundToPlay].pitch = Random.Range(0.9f, 1.1f);
soundEffects[soundToPlay].Play();
}
3.添加音效
在需要播放音效时,调用playSFX(int soundToPlay)函数,其中soundToPlay对应添加的SoundEffects中的Element值,如消灭敌人时为3
Stompbox.cs中OnTriggerEnter2D里添加消灭敌人音效
//死亡音效
AudioManager.sInstance.playSFX(3);
Pickup.cs中OnTriggerEnter2D里分别添加Gem和Heal音效
//获取钻石音效
AudioManager.sInstance.playSFX(6);
//治愈音效
AudioManager.sInstance.playSFX(7);
LevelManager.cs中,RespawnCo()里添加死亡音效
PlayerController.sInstance.gameObject.SetActive(false);
//死亡音效
AudioManager.sInstance.playSFX(8);
PlayerHealthController.cs中,DealDamage()里,受伤后添加hurt音效
//角色受伤后推动状态
PlayerController.sInstance.KnockBack();
//受伤音效
AudioManager.sInstance.playSFX(9);
PlayerController.cs中,Update()和Bounce()里添加跳跃音效
//Update()里
//跳跃
if (Input.GetButtonDown("Jump"))
{
if (isGrounded) //判断是否在地面
{
theRB.velocity = new Vector2(theRB.velocity.x, jumpForce);
//跳跃音效
AudioManager.sInstance.playSFX(10);
}
else
{
if (canDoubleJump)
{
//不在地面,连跳
theRB.velocity = new Vector2(theRB.velocity.x, jumpForce);
canDoubleJump = false;
//跳跃音效
AudioManager.sInstance.playSFX(10);
}
}
}
public void Bounce()
{
theRB.velocity = new Vector2(theRB.velocity.x, bounceForce);
//跳跃音效
AudioManager.sInstance.playSFX(10);
}
4.音乐
添加参数
public AudioSource bgMusic; //背景音乐
public AudioSource levelEndMusic; //关卡结束音乐
添加音乐到场景
在AudioManager节点下,新建两个空节点SFX和Music,调整目录如下:
设置音乐指向
设置Main Level音乐Loop
设置Level Victory音乐去掉Play On Awake
5.音频混合器
打开Audio Mixer
添加MainMix
在Group中Master下,添加Music和SFX
设置SFX的Output
设置Music的Output
运行游戏,可相应调节音量大小