unity2D横版游戏教程终章-主菜单和暂停菜单

最后一节我们做一下主菜单和暂停菜单

我们创建一个新的scene,命名为Menu,这个就是主菜单场景

我们双击Menu进去设置一下我们的UI

我们先添加一下Canvas,在Canvas下面创建连个Panel,一个是背景,一个用来装UI控件

unity2D横版游戏教程终章-主菜单和暂停菜单_第1张图片

 我们设置一下Background的颜色

unity2D横版游戏教程终章-主菜单和暂停菜单_第2张图片

 然后我们就要设置一些按钮啥的控件了

我们添加两个按钮,分别是play和quit,这个按钮还是添加Legacy里面的Button

unity2D横版游戏教程终章-主菜单和暂停菜单_第3张图片

 简单设置一下这两个按钮,修改他们的Text分别是Play和Quit,顺便修改一下颜色和大小

然后调整一下位置,记得把这两个按钮的锚点改成正下方

unity2D横版游戏教程终章-主菜单和暂停菜单_第4张图片

 接着我们写一下脚本,让点击Play的时候跳转到我们的游戏场景,点击Quit的时候退出游戏

我们创建一个C#脚本,挂到Menu的身上,脚本命名为Menu

unity2D横版游戏教程终章-主菜单和暂停菜单_第5张图片

 我们简单写一下Menu的代码

unity2D横版游戏教程终章-主菜单和暂停菜单_第6张图片

 我们开始游戏时加载下一个编号的场景

这个需要我们去Bulid Settings设置一下,我们在file那里去到Build settings,将我们的Menu场景拖进去,调整一下顺序

unity2D横版游戏教程终章-主菜单和暂停菜单_第7张图片

 下面我们需要把Menu脚本中的两个函数分别绑定到那两个按钮上

我们选择Play的按钮,在下面有个On clik(),这个也就是点击时进行的操作,我们用这个可以调用其他物体身上挂载的脚本的函数。我们点击加号就可以添加一个Object了

unity2D横版游戏教程终章-主菜单和暂停菜单_第8张图片

 我们把Menu拖进去,这样就可以调用Menu挂载的脚本中的函数了

我们给Play按钮调用PlayGame函数,Quit按钮调用QuitGame的函数

unity2D横版游戏教程终章-主菜单和暂停菜单_第9张图片

 unity2D横版游戏教程终章-主菜单和暂停菜单_第10张图片

 这样主菜单就做好了,不过点击Quit按钮是没有反应的,打包后才可以用

下面我们做一下暂停菜单

我们回到游戏场景,我们之前做了收集樱桃时的UI显示,我们再做一下暂停菜单。我们先做一下暂停菜单的按钮,我们在Canvas下面创建一个Button,命名为Pause,调整一下Pause的大小和位置,把Text的内容改成Pause,同时修改一下颜色

unity2D横版游戏教程终章-主菜单和暂停菜单_第11张图片

 记得把Pause的锚点改成左上角

然后我们在Canvas下面在创建一个Panel,命名为Menu,这个就是暂停菜单的内容,内容我们这里以修改音乐的大小为例

调整一下Menu的位置和颜色

unity2D横版游戏教程终章-主菜单和暂停菜单_第12张图片

 在Menu下面创建一个Text。内容是Pause Menu,把它移动到Menu的上面,修改一个大小和颜色

unity2D横版游戏教程终章-主菜单和暂停菜单_第13张图片

 然后我们创建一个Slider(滑动条),来控制音乐的大小,在Menu下面创建一个Slider,调整一下位置

再创建一个Text放到Slider左边,内容是”音乐”

unity2D横版游戏教程终章-主菜单和暂停菜单_第14张图片

 Menu的下面再添加一个按钮用来返回游戏

我们创建一个Button,Text的内容是返回,调整一下位置

unity2D横版游戏教程终章-主菜单和暂停菜单_第15张图片

 这样UI部分就做好了

我们在设置一下代码实现

我们创建一个C#脚本,命名为Pause来控制暂停菜单,我们把它挂到Canvas

然后写一下代码

unity2D横版游戏教程终章-主菜单和暂停菜单_第16张图片

 记得设置一开始Menu是不激活了,当点击Pause按钮时他才会激活

通过设置TimeScale(时间比例)可以调节时间的流速

然后我们在Pause按钮那里设置一下On Click()执行PausePress函数

unity2D横版游戏教程终章-主菜单和暂停菜单_第17张图片

 这个做好了那么返回游戏的操作和这个一样

我们在Pause脚本创建一个返回游戏的函数然后在点击返回按钮时使用

unity2D横版游戏教程终章-主菜单和暂停菜单_第18张图片

 当点击暂停菜单中的返回按钮时调用这个函数

unity2D横版游戏教程终章-主菜单和暂停菜单_第19张图片

 下面我们就剩音乐滑动条还没设置,我们需要把这个滑动条和游戏中的声音联系在一起

我们就要用到Audio Mixer(混音器),我们在Asset界面右键创建一个Audio Mixer

我们双击Audio Mixer就会进入到它的设置界面

可以发现Mixer的范围是-88-0,所以我们回到Slider,把它的范围也设置成-88-0

unity2D横版游戏教程终章-主菜单和暂停菜单_第20张图片

 然后我们把背景音乐输出到这个混音器上,让混音器控制它的大小,我们到SoundManager把bgm的Audio Source的output设置给我们创建的这个混音器

unity2D横版游戏教程终章-主菜单和暂停菜单_第21张图片

 然后我们把混音器和滑动条连接在一起,让我们滑动滑动条的时候改变混音器的音效的大小

所以将滑动条的value值和Mixer的值绑定在一起即可

我们回到Pause的代码

unity2D横版游戏教程终章-主菜单和暂停菜单_第22张图片

 我们先获得一下Audio Mixer的引用,回到unity把创建的Mixer拖过去

我们接下来让Slider的value和mixer的volume绑定

我们需要把Audio Mixer的volume改成代码可编辑,我们回到unity选择创建的Audio Mixer,在右边的属性栏我们右键Volume,选择Expose ‘Volume(of Master)’ to script(将音量输出到脚本),这样就可以在代码编辑Volume了

unity2D横版游戏教程终章-主菜单和暂停菜单_第23张图片

 这时候Exposed Parameters(暴露参数)会变为1,也就多出来我们暴露的Volume,我们重命名为MainVolume

unity2D横版游戏教程终章-主菜单和暂停菜单_第24张图片

 我们回到Pause代码中设置一下MainVolume的值,也就是Volume的值

unity2D横版游戏教程终章-主菜单和暂停菜单_第25张图片

 然后我们在滑动滑动条时调用这个函数

unity2D横版游戏教程终章-主菜单和暂停菜单_第26张图片

 这样就做好了

贴一下Menu和Pause的代码,最后的项目上传到资源了,需要的可以下载参考

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class Menu : MonoBehaviour
{
    //开始游戏
    public void PlayGame()
    {
        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
    }
    //退出游戏
    public void QuitGame()
    {
        Application.Quit();
    }
}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;

public class Pause : MonoBehaviour
{
    //获得暂停菜单的引用
    public GameObject PauseMenu;
    //获得Audio Mixer的引用
    public AudioMixer audioMixer;
    public void PausePress()
    {
        //把它激活
        PauseMenu.SetActive(true);
        //暂停游戏
        Time.timeScale = 0f;
    }

    public void ResumeGame()
    {
        //取消激活
        PauseMenu.SetActive(false);
        //恢复游戏
        Time.timeScale = 1f;
    }
    //将Slider的value和mixer的volume绑定
    public void SetVolume(float value)
    {
        audioMixer.SetFloat("MainVolume", value);
    }
}

到这里,跟随麦扣老师的步伐,2D横版游戏就结束了。把做游戏的过程写成文字真的是巩固知识的好办法,我自己是先看了几遍了教程,然后才写成了文章记录下来,方便自己后面忘记那一部分的内容好去查阅,但是写文章的过程真的是收获满满,你要考虑用词,还要注意有没有错的地方,这个过程查了很多资料,比如协程,单例模式等。也学会了麦扣老师强调的看官方文档。

以一种讲授者的视角来写教程不失为一种学习和巩固的好办法,可以注意到平时注意不到的细节和容易犯错的地方,最后非常感谢麦扣老师的入门教程,我学到了很多,也希望看到这个教程的同学能有所收获,阿里嘎多!(2022-8-6)

你可能感兴趣的:(unity,游戏,unity,游戏引擎)