Unity 入门教程 之 游戏中暂停与恢复游戏设置
来源:网络收集 点击: 时间:2024-07-24打开Unity,新建一个空工程,然后Unity界面如下图

在工程中新建一个脚本,脚本可以命名为“GameTest”,具体如下图

选中“GameTest”脚本,双击脚本或者右键“Open C# Project”,打开脚本,具体如下图

在打开的脚本“GameTest”进行编辑,首先设定初始变量,然后游戏开始时先暂停游戏,并设定按“Esc”暂停游戏,显示菜单,接着设定按UI“开始游戏”,显示运动物体,并且UI消失,最后完成开始函数、暂停函数的功能,使用Time.timeScale和暂停bool值变量,具体代码及代码说明如下图



“GameTest.cs”脚本内容如下:
using UnityEngine;
public class GameTest : MonoBehaviour {
public bool IsGamePaused;
public GameObject cubeGo;
public GameObject capsuleGo;
void Start()
{
PauseGame();
cubeGo.SetActive(false);
capsuleGo.SetActive(false);
}
void Update()
{
if (Input.GetKey(KeyCode.Escape))
{
PauseGame();
}
if (!IsGamePaused) {
capsuleGo.transform.Rotate(Vector3.forward * 60);
}
}
private void FixedUpdate()
{
cubeGo.transform.Rotate(Vector3.up * 60);
}
void OnGUI()
{
if (!IsGamePaused)
return;
///自动布局,按照区域
GUILayout.BeginArea(new Rect((Screen.width - 100) / 2, (Screen.height - 200) / 2, 100, 200));
///横向
GUILayout.BeginVertical();
if (IsGamePaused)
{
if (GUILayout.Button(开始游戏, GUILayout.Height(50)))
{
StartGame();
}
}
if (GUILayout.Button(退出游戏, GUILayout.Height(50)))
{
Application.Quit();
}
GUILayout.Button(关于游戏, GUILayout.Height(50));
GUILayout.EndVertical();
GUILayout.EndArea();
}
void StartGame()
{
IsGamePaused = false;
Time.timeScale = 1;
cubeGo.SetActive(true);
capsuleGo.SetActive(true);
}
void PauseGame()
{
IsGamePaused = true;
Time.timeScale = 0;
}
}
6/7脚本编译正确后,回到Unity,新建一个“GameObject”、“Cube”、“Capsule”物体,然后把脚本“GameTest”赋给“GameObject”,并把“Cube”、“Capsule”赋值给脚本对应值,具体如下图

运行场景,游戏开始显示UI,不显示运动物体,按按UI“开始游戏”,显示运动物体,并且UI消失,随后,按下“Esc”,物体暂停运动,UI显示,具体如下图



当时用Time.timeScale并不会所有动作都暂停
功能的函数写在 FixedUpdate() ,当使用 Time.timeScale = 0 时项目中所有 FixedUpdate() 将不被调用,以及所有与时间有关的函数;在 update 通过一个布尔值去控制暂停和恢复
若帮到您,还请帮忙投票以帮助到更多的人;若有疑问,请留言
UNITY游戏暂停游戏暂停注意版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.1haoku.cn/art_1001365.html