可以通过将游戏对象标记为非活动来暂时从场景中移除此对象。要执行此操作,请导航到 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);
}
}