Version: 2018.4
Creating components with scripting
Tags

停用游戏对象

可以通过将游戏对象标记为非活动来暂时从场景中移除此对象。要执行此操作,请导航到 Inspector 并取消选中该游戏对象名称旁边的复选框(请参阅下图),或使用脚本中的 activeSelf 属性。

游戏对象名称旁边的激活复选框,均在红色框中突出显示
游戏对象名称旁边的激活复选框,均在红色框中突出显示

停用父游戏对象

停用父游戏对象时,也会停用其所有子游戏对象。

此停用会覆盖所有子游戏对象上的 activeSelf 设置,因此 Unity 会使父级下的整个层级视图将变为非活动状态。这不会更改子游戏对象上 activeSelf 属性的值,因此重新激活父对象时,子对象将恢复到其原始状态。这意味着无法通过读取 activeSelf 属性来确定子游戏对象当前是否在场景中处于活动状态。而应该使用 activeInHierarchy 属性,该属性将考虑父对象的覆盖效果。

如果希望更改游戏对象的子游戏对象的 activeSelf 设置,但不更改父对象的设置,可以使用如下代码:

void DeactivateChildren(GameObject g, bool a) 
{
    g.activeSelf = a;
    
    foreach (Transform child in g.transform) 
    {
        DeactivateChildren(child.gameObject, a);
    }
}
Creating components with scripting
Tags