GameObject.SetActiveRecursively(true)已过时?

时间:2017-01-06 14:25:14

标签: c# unity3d unity5

当我尝试使用时:

GameObject.Find("teleportation").SetActiveRecursively(true);

GameObject.SetActiveRecursively(bool)已过时,它说使用GameObject.SetActive()代替现在由儿童继承。

在我的层次结构中,我有一个活跃的对象,他的孩子不活跃。 如果我在活动对象上使用GameObject.SetActive(),则不会激活子项。 如果我在活动对象上使用GameObject.SetActiveRecursively(),则会激活子项。

那么,我应该使用不同的东西让孩子活跃吗? 我不明白为什么GameObject.SetActive()无法工作。

1 个答案:

答案 0 :(得分:3)

SetActiveRecursively函数已经过时,就像你提到的那样。您现在应该使用SetActive()

您可以使用递归和SetActive()来复制SetActiveRecursively的功能。您也可以将其放在扩展方法中。

public static class ExtentionMethod
{
    public static void SetActiveRecursivelyExt(this GameObject obj, bool state)
    {
        obj.SetActive(state);
        foreach (Transform child in obj.transform)
        {
            SetActiveRecursivelyExt(child.gameObject, state);
        }
    }
}

<强>用法

GameObject obj = GameObject.Find("teleportation");
obj.SetActiveRecursivelyExt(true);