首页 > 解决方案 > 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();
        }
    }

标签: unity3d

解决方案


当我打电话pauseMenue.SetActive(false)并评论它时,我检查了它,然后它起作用了。我同时使用 OnPointerDown 和 GetMouseButtonDown 这就是为什么一键调用 SetActive(false) 和 SetActive(true) 的原因。OnClick 不是这种情况,这就是我感到困惑的原因。


推荐阅读