首页 > 解决方案 > 发生某事时如何启用和禁用对象

问题描述

玩家穿过每面墙后会改变颜色。如果玩家是黄色并且墙壁是红色,那么玩家的颜色将变为橙色。此外,下一堵墙将生成一个橙色的小部分。但是,我无法打开和关闭橙色墙壁对象。下面的代码改变了玩家的颜色,也改变了墙壁的颜色。但是,我无法使其激活墙壁(即 deployBlack),并在通过它后将其停用。这是我的代码:

if(col.tag!= currentColor){
        if (currentColor=="Yellow" && col.tag=="Red"){
            sr.color=colorOrange;
            currentColor="Orange";
            deployBlack.SetActive(true);
            whitesr.color=colorOrange; 
            deployBlack.SetActive(false);
      }

标签: c#unity3d

解决方案


好,知道了。现在我看到了您的其余代码,诊断问题要容易得多。您if发生的一个语句OnTriggerEnter2D最终将执行,当它执行时,它设置deployBlacktrue但在该真实语句之后立即将其设置为false每次。因此,您将看到它,直到您穿过墙壁一次。一旦你这样做,它将结束任何设置为if的语句。这意味着无论任何东西是什么颜色,意志的最终结果都是。您需要将其放在代码中的其他位置。deployBlackfalsedeployBlackfalsedeployBlack.SetActive(false);

我仍然有点不确定你想要实现什么,因为我不知道你是如何产生墙的,或者玩家是什么变量/精灵,但无论如何,你的核心问题是每个if语句都以deployBlack.SetActive(false);所以它总是显示为假,除了它设置为的几毫秒true

希望这可以帮助!


推荐阅读