Session26:暂停菜单 & AudioMixer
本节课我们来添加一个暂停菜单
创建菜单
首先添加暂停的按钮,操作比较简单,无需赘述
然后添加暂停菜单,菜单需要背景和按钮,所以新建一个Panel,并在其下建立几个Button和一个Slider(滑动条)
操作比较简单,自己选择喜欢的效果就完事了,完成后的效果:
然后就是按钮的逻辑部分,我们直接在Menu这个类中去添加函数,这样以后所有跟Menu有关的Button都可以用这个脚本。
public void PauseGame()
{
pauseMenu.SetActive(true);
}
public void ResumeGame()
{
pauseMenu.SetActive(false);
}
然后把Menu挂到Canvas上,选择Pause Menu为刚才创建的暂停菜单
并给按钮选择On Click() event
这样就可以实现暂停菜单的出现和消失了,但是暂停时游戏并没有跟着暂停,我们可以继续添加:
public void PauseGame()
{
pauseMenu.SetActive(true);
Time.timeScale = 0f;
}
public void ResumeGame()
{
pauseMenu.SetActive(false);
Time.timeScale = 1f;
}
通过修改timeScale可以实现控制游戏速度的效果,如果以后想要实现慢动作的效果就可以使用它。
AudioMixer
因为想要通过暂停菜单的Slider来控制游戏bgm的音量,所以我们需要学习一下AudioMixer。
先在Assets下创建一个Audio Mixer,叫做MainMixer,作为我们的主控制器。
然后打开Window -> Audio -> Audio Mixer,可以看到一个设置界面
有了Audio Mixer之后,我们就可以将Audio Source输出到这里,通过上面的Master就可以修改音量。
然后我们要实现Slider和Audio Mixer的音量绑定
我们可以选择一个轨道,将它的Volume暴露到脚本
就可以在脚本中编辑这个参数了:
public AudioMixer audioMixer;
public void SetVolume(float value)
{
audioMixer.SetFloat("MainVolume", value);
}
回到Unity,把组件挂上去:
为Slider选择value changed触发函数:
哦对了别忘了调整Slider的value范围和Main Mixer的范围一致
进入游戏,调整Slider,就可以实现控制音量的效果了