unity3d - unity Setactive 函数在指针事件中不起作用
问题描述
SetActive(true)
单击 Unity 中的暂停按钮后,我想暂停菜单。我的PauseGame()
功能完全正常,但是当我在事件中调用它时OnPointerDown(PointerEventData eventData)
(因为我希望我的 Button 功能在第一次单击后而不是在鼠标启动时唤起)游戏暂停但暂停菜单没有激活。
public void PauseGame()
{
if (player.GetComponent<PlayerController>().contactOnGround == true)
{
pauseMenue.SetActive(true);
gamePaused = true;
Time.timeScale = 0;
pauseMenueClosed = false;
}
}
public void OnPointerDown(PointerEventData eventData)
{
if(eventData.pointerCurrentRaycast.gameObject.name == "PauseButton")
{
PauseGame();
}
}
解决方案
当我打电话pauseMenue.SetActive(false)
并评论它时,我检查了它,然后它起作用了。我同时使用 OnPointerDown 和 GetMouseButtonDown 这就是为什么一键调用 SetActive(false) 和 SetActive(true) 的原因。OnClick 不是这种情况,这就是我感到困惑的原因。
推荐阅读
- java - SQLite 驱动程序不适合
- python - 我的程序只计算最后一个值
- arrays - 使用 redux 从数组中删除一个元素
- c# - 我在 specflow 功能文件中收到错误“IdentifierExpected”
- vue.js - vue路由器同页刷新
- flutter - 如何从 Flutter 中删除或识别未使用的包以减小项目的大小?
- r - 如何在组内应用条件
- mongodb - MongoDB 按 3 级嵌入对象过滤
- angularjs - ng-table-dynamic 中基于日期的排序
- ceph - 命令超时 [osd1][INFO] 运行命令:sudo /usr/sbin/ceph-volume