【问题标题】:Unity - How to block a canvas when another canvas is onUnity - 如何在另一个画布打开时阻止画布
【发布时间】:2021-06-30 23:33:52
【问题描述】:

我有一张游戏结束的画布和一张带有暂停菜单的画布,主屏幕上有按钮。当我玩游戏时,我死了,我的画布上的游戏出现了,但是 pausemenu 画布上的按钮不会消失或禁用,可以按下并且 pausemenu 画布出现在游戏结束上。谢谢!

enter image description here

【问题讨论】:

    标签: unity3d canvas


    【解决方案1】:

    您所要做的就是在您的按钮上使用 .SetActive() 函数!当您在游戏结束屏幕上时,只有该画布中的元素应该处于活动状态。

    首先,您将在脚本中将暂停按钮声明为公共游戏对象。然后在开始时,在游戏开始时调用暂停按钮,但是,如果 gameOver,则将其设置为 false。

    public GameObject pauseButton;
    
    void Start(){
    pauseButton.SetActive(true);
    }
    
    void OnTriggerEnter2D(Collider2D other){
    if(other.tag == "Enemy"){
    pauseButton.SetActive(false);
    gameOver();
    }
    
    }
    

    【讨论】:

      【解决方案2】:

      您需要为暂停、游戏中、菜单、死亡等游戏状态制作系统。然后在画布上为每个屏幕设置父游戏对象(此对象下每个屏幕的按钮和部分),然后启用/禁用此父游戏对象。

      所以当你死了它会是这样的

      void UpdateUI(){  
          if(status == status.dead)
              canv_pause.SetActive(false);
              canv_ingame.SetActive(false);
              canv_menu.SetActive(false);
              canv_dead.SetActive(true);
          if(status == status.menu)
              canv_pause.SetActive(false);
              canv_ingame.SetActive(false);
              canv_menu.SetActive(true);
              canv_dead.SetActive(false);
          //etc...
      }
      

      【讨论】:

        猜你喜欢
        • 2015-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-26
        • 1970-01-01
        • 1970-01-01
        • 2015-08-12
        • 2016-03-03
        相关资源
        最近更新 更多