Unity 游戏对象数组 setactive 不工作

Unity gameoject array set active not working

我正在Unity5中做一个2D游戏项目。现在,我在将我的 gameojects 数组的 active 设置为 false 时遇到问题。我已将此脚本附加到 an object in my scene and attached 2 character gameobject to it. 我已尝试:

public GameObject[] charactersArray;

void Start ()
{
    foreach (GameObject go in charactersArray)
    {
        go.SetActive(false);
        Debug.Log(go.active);
    }
}

虽然控制台输出是错误的,但我的游戏对象仍然出现在我的游戏中。

所以,我试着看看我的游戏对象在开始时处于活动状态:

public GameObject[] charactersArray;

void Start ()
{
    foreach (GameObject go in charactersArray)
    {
        Debug.Log(go.active);
    }

}

我所有游戏对象的控制台输出仍然是 "false"。

我的代码有什么问题吗?我是不是漏掉了什么?

发生这种情况是因为您没有修改场景中的 GameObjects(Mr Knight 和 Ms Sorceress)实例。您改为修改两个游戏对象的预制件。

下面是您的对象在编辑器中的样子,这表明您正在插槽中使用预制件。

如果您使用的是非预制对象,图像应该是这样的

只需将游戏对象(Mr Knight 和 Ms Sorceress)从 Hierarchy 选项卡拖到 Element 0元素 1 分别。这应该有效。

请注意,如果层次结构选项卡中的对象也是从预制件创建的,您将看到上面的第一张图片而不是第二张图片,但您需要像我上面提到的那样重新添加它们,因为这看起来像您有Hierarchy 选项卡中插槽中的预制件而不是场景中的实际对象。