设置暂停ui

本文介绍如何在Unity中实现游戏暂停功能,通过创建按钮并使用脚本控制游戏状态的切换,包括暂停和继续游戏,同时调整游戏时间流逝速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

新建两个sprite renderer附上开始和暂停的按键

然后挂上脚本

using UnityEngine;
using System.Collections;

public class GamePause : MonoBehaviour {

    
    void OnMouseUpAsButton()
    {
        //用GameManager里的TransformGameState方法去调用按钮功能
        GameManager._instance.TransformGameState();
    }
}

在gamemanager脚本里调用

public enum GameState//枚举两个游戏状态
{
    Running,
    Pause
}
public class GameManager : MonoBehaviour
{
    public GameState gameState=GameState.Running;//声明一个共有变量存储游戏状态,默认为运行
    public GameObject gamePuase;
    public GameObject gameContinue;

 void Start()
    {
        gameContinue.SetActive(false);
        gamePuase.SetActive(true);
    }

 public void TransformGameState()
    {
        if (gameState==GameState.Running)
        {PuaseGame();
        gameContinue.SetActive(true);
        gamePuase.SetActive(false);
        }
        else if (gameState==GameState.Pause)
        {
            ContinueGame();
            gameContinue.SetActive(false);
            gamePuase.SetActive(true);
        }
    }
    public void PuaseGame()
    {
        
        Time.timeScale = 0;//将时间暂停
        gameState=GameState.Pause;
    }

    public void ContinueGame()
    {
       
        Time.timeScale = 1;//开始时间
        gameState=GameState.Running;
    }
}

这样就完成按键切换与控制时间,特别需要注意在暂停的时候不让角色移动需要在主角移动的方法内加上

 if (isMouseDown&&GameManager._instance.gameState==GameState.Running)

 

转载于:https://www.cnblogs.com/fuperfun/p/5352324.html

### 如何在 Unity 中创建游戏暂停 UI 界面 #### 创建 Canvas 和 Pause Menu 为了构建一个有效的暂停菜单,在Unity中设计用户界面(UI)的第一步是创建一个Canvas。Canvas作为所有UI元素的容器,决定了UI如何在屏幕上显示[^1]。 ```csharp // 在场景中添加一个新的 GameObject 并命名为 "Canvas" GameObject canvasObject = new GameObject("Canvas"); canvasObject.AddComponent<Canvas>(); canvasObject.GetComponent<Canvas>().renderMode = RenderMode.ScreenSpaceOverlay; ``` 接着,向此Canvas下添加一个Panel来充当暂停菜单背景,并设置其属性使其居中且覆盖整个屏幕: ```csharp // 添加 Panel 作为子物体给 Canvas GameObject panel = Instantiate(Resources.Load<GameObject>("Prefabs/PauseMenuBackground")); panel.transform.SetParent(canvasObject.transform); panel.name = "PauseMenu"; panel.SetActive(false); // 默认不激活该面板 ``` #### 编写控制逻辑脚本 现在已编写了用于管理UI行为的脚本,需将此脚本拖拽至相应的GameManager或专门为此目的而设的游戏对象上,以便于管理和操作UI组件[^2]。 ```csharp using UnityEngine; public class UIManager : MonoBehaviour { public GameObject pauseMenu; private void Update() { if (Input.GetKeyDown(KeyCode.Escape)) { TogglePause(); } } /// <summary> /// 切换游戏暂停状态以及显示/隐藏暂停菜单. /// </summary> public void TogglePause(){ bool isPaused = Time.timeScale == 0f; if (!isPaused){ Time.timeScale = 0f; pauseMenu.SetActive(true); }else{ Time.timeScale = 1f; pauseMenu.SetActive(false); } } } ``` #### 打开和关闭UI表单 当玩家触发特定事件时,可以调用`OpenUIForm()`方法打开指定ID对应的UI窗体;同样地,也可以通过相似的方式关闭它[^3]。 ```csharp /// <example>例如要打开暂停菜单:</example> GameEntry.UI.OpenUIForm(UIFormId.PauseMenu, this); /// <example>关闭当前活动的UI窗体</example> GameEntry.UI.CloseUIForm(currentActiveUIForm); ``` 对于更复杂的项目结构,可能还需要调整资源加载方式以适应团队内部的工作流程和技术栈需求[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值