【问题标题】:Unity 2D SetActive() is not workingUnity 2D SetActive() 不工作
【发布时间】:2016-08-25 03:15:40
【问题描述】:

在这里,我使用 SetActive(true) 来启用我的游戏对象,但它不起作用。我尝试使用各种可以启用我的 gameObj 的函数和对象,如代码所示。但没有任何工作。虽然当我设置 setActive(false) 时,它可以工作,但这不是 setActive(true) 的情况。我不知道原因。任何人都可以帮助我吗?顺便说一句,我使用的是 Unity 4.3.4 版本。

if (paddle.life == 1) {  
                GameObject life_2 = GameObject.Find ("life2");
                GameObject lost = GameObject.Find("lostlife");
                life_2.SetActive (false);
                lost.SetActive(true);
                //lost.active = true;
                //lost.renderer.enabled = true;(why null ref)

                //after some secs disable the message
                //Destroy(lost, 4);
            }

【问题讨论】:

  • 定义“不工作”——实际发生了什么?
  • 尝试调试您的代码。使用断点可能。你的代码逻辑一定有问题。
  • 调用 set active 只会将 localActive 标志设置为您在函数中提供的值。如果父游戏对象被停用,则所有子对象都不会激活

标签: unity3d c#-3.0


【解决方案1】:

来自unity doc for GameObject.Find的一部分:

如果找不到具有名称的游戏对象,则返回 null。如果名字 包含一个“/”字符,它将像路径一样遍历层次结构 姓名。 此函数仅返回活动的游戏对象。

可能您需要在脚本中引用您的游戏对象作为参数。这样您就可以参考游戏对象(无论它是否处于活动状态),然后它应该可以工作。

【讨论】:

    【解决方案2】:

    你用过:

    lost.active = false;
    

    lost.renderer.enabled = false;
    

    但主要的是:

    lost.enabled = false;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多