[Unity][UGUI]暂停界面UGUI交互暂停Time.timeScale为0的时候Button是否能够响应

 

start()

{

//暂停
            Time.timeScale = 0f;
            AudioListener.pause = true;

}

暂停后对UGUI的按钮挂载脚本。使得输出下面的函数。


    public void test_time0_button()
    {
        Debug.Log("  paused_test  ");
    }

 

答案是可以的。

Time.timeScale = 0f;
            AudioListener.pause = true;

不影响UGUI的按钮button的点击

 

 

### Unity3D UI 界面设计与实现教程 #### 一、UI 的定义及其在实 3D 中的作用 用户界面(User Interface, UI)是指人机交互过程中,用于展示信息并接受用户操作的部分。在实 3D 体验中,UI 起到连接虚拟世界与用户的桥梁作用,提供必要的反馈机制和互动功能[^1]。 #### 二、Unity 提供的三种 UI 系统概述 Unity 支持多种方式来构建用户界面,主要包括 uGUI(或 Unity UI)、IMGUI 和 UI Toolkit: - **uGUI (Unity UI)** 是一种基于 Canvas 的现代 UI 系统,支持拖放式布局管理器和响应式设计,适合大多数场景下的 UI 开发需求。 - **IMGUI (Immediate Mode GUI)** 更加灵活,适用于调试工具或者自定义编辑器窗口开发,在运行动态绘制控件。 - **UI Toolkit** 则是一个较新的解决方案,旨在提高性能表现的同保持易用性和可扩展性,特别推荐给需要高性能渲染的应用程序开发者使用。 #### 三、采用 MVC 架构进行 UI 设计 为了更好地组织代码结构并增强项目的维护性,可以考虑引入 Model-View-Controller (MVC) 模式来进行 UI 层次划分: - **Model**: 处理核心数据逻辑,比如游戏角色的状态变化等; - **View**: 主要关注于视觉呈现方面的工作,例如按钮样式调整或是文字颜色改变等等; - **Controller**: 承担起中介角色的任务,它会接收来自 View 发送过来的消息通知,并据此做出相应的反应动作,同也会主动向 Model 请求获取最新资料以便刷新前端画面效果[^2]。 下面给出一段简单的示例代码演示如何利用 C# 实现上述概念中的 Controller 部分功能: ```csharp using UnityEngine; using UnityEngine.UI; public class ExampleController : MonoBehaviour { public Text scoreText; // 绑定 Score 显示区域 private int currentScore = 0; void Start() { UpdateScoreDisplay(); } public void IncreaseScore(int amount){ this.currentScore +=amount ; UpdateScoreDisplay(); } private void UpdateScoreDisplay(){ if(this.scoreText !=null ){ this.scoreText.text="当前得分:"+this.currentScore.ToString (); }else{ Debug.LogError("未找到分数显示对象!"); } } } ``` 此脚本展示了基本的操作流程——当某个事件触发增加积分行为,不仅改变了内部变量值而且还同步更新了界面上对应的数值显示。 #### 四、常见应用场景 - 控制面板开关状态切换 对于一些复杂的游戏来说可能还需要具备更多高级特性,比如说能够根据不同条件自动隐藏/显现某些特定模块的功能。这里简单介绍一下如果想要达成这样的目的应该怎么做? 假设我们有一个设置菜单,希望在玩家按下 ESC 键之后弹出来;再次按ESC则关闭该对话框回到正常游戏画面上去。那么就可以按照如下思路编写相应逻辑代码片段: ```csharp using UnityEngine; public class SettingsMenuManager : MonoBehaviour { public GameObject settingsPanel;//关联预制体资源文件夹内的Settings Panel实例化后的物体名称 bool isSettingOpen=false ; void Update (){ if(Input.GetKeyDown(KeyCode.Escape)){ ToggleSettingsVisibility(); } } void ToggleSettingsVisibility(){ if(settingsPanel.activeSelf==true &&isSettingOpen == true ){ settingsPanel.SetActive(false); Time.timeScale=1f ;//恢复间流动速度至默认水平 Cursor.lockState=CursorLockMode.Locked; Cursor.visible=false ; isSettingOpen=false ; }else{ settingsPanel.SetActive(true ); Time.timeScale=0f ;//暂停整个物理引擎运作过程直至重新激活为止 Cursor.lockState=CursorLockMode.None; Cursor.visible=true ; isSettingOpen=true ; } } } ``` 以上就是关于如何通过编程手段控制 Unity 场景里任意 Game Object 可见性的例子说明[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值