广告合作
  • 今日头条

    今日头条

  • 百度一下

    百度一下,你就知道

  • 新浪网

    新浪网 - 提供新闻线索,重大新闻爆料

  • 搜狐

    搜狐

  • 豆瓣

    豆瓣

  • 百度贴吧

    百度贴吧——全球领先的中文社区

  • 首页 尚未审核订阅工具 订阅

    Unity 入门教程 之 游戏中暂停与恢复游戏设置

    来源:网络收集  点击:  时间:2024-07-24
    【导读】:
    Unity 入门教程 之 游戏中暂停与恢复游戏设置。在游戏中设置游戏暂停,经常会想到 Time.timeScale = 0; 这种方法,但是 Time.timeScale 只是能暂停部分东西;如果在 update 函数中持续改变一个物体的位置,这种位置改变貌似是不会受到暂停影响的。把使用Time.timeScale = 0; 功能的函数写在 FixedUpdate() ,当使用 Time.timeScale = 0 时项目中所有 FixedUpdate() 将不被调用,以及所有与时间有关的函数。在 update 通过一个布尔值去控制暂停和恢复。工具/原料moreUnity Time.timeScale入门教程 之 游戏中暂停与恢复游戏设置1/7分步阅读

    打开Unity,新建一个空工程,然后Unity界面如下图

    2/7

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

    3/7

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

    4/7

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

    5/7

    “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”赋值给脚本对应值,具体如下图

    7/7

    运行场景,游戏开始显示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

    相关资讯

    ©2019-2020 http://www.1haoku.cn/ 国ICP备20009186号05-05 22:12:57  耗时:0.024
    0.0237s