Unity - 如何在另一个 canvas 开启时阻止 canvas

Unity - How to block a canvas when another canvas is on

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

enter image description here

您只需在按钮上使用 .SetActive() 函数即可!当您在游戏结束屏幕上时,只有 canvas 中的元素应该处于活动状态。

首先,您需要在脚本中将暂停按钮声明为 public GameObject。然后在开始的时候,你在游戏开始的时候调用暂停按钮,但是,如果gameOver,将它设置为false。

public GameObject pauseButton;

void Start(){
pauseButton.SetActive(true);
}

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

}

您需要为暂停、游戏中、菜单、死亡等游戏状态制作系统。然后每个屏幕都有 canvas 个父游戏对象(此对象下每个屏幕的按钮和部分),然后只有 enable/disable 个这个父游戏对象。

所以当你死了之后它看起来像这样

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...
}