Unity3d教程游戏目标 (GameObjects)停用游戏目标 (GameObjects)

来源:互联网 发布:少年三国志 知乎 编辑:程序博客网 时间:2024/05/21 22:24
停用游戏目标 (GameObjects)
可将一个游戏目标 (GameObject) 标记为“不活动”,暂时将其从场景中删去。运用脚本中的 activeSelf 特点或检视器中的激活复选框可实现该意图


游戏目标 (GameObject) 的激活复选框

停用父游戏目标 (GameObject) 的影响
停用父目标时,停用也将掩盖所有其子目标上的 activeSelf 设置,因此,父级以下的整个层次布局都处于不活动状态。请注意,这样不会更改子目标上 activeSelf 特点的值,所以在父目标从头激活时,子目标会康复到初始状态。这意味着,经过阅览子目标的 activeSelf 特点无法断定其在场景中当时是不是处于活动状态。反而,您应当运用 activeInHierarchy 特点,它会将父目标的掩盖作用思考在内。

Unity 4.0 中引入了该掩盖行为。在前期版别中,有一个称为 SetActiveRecursively 的功用,可用于激活或停用给定父目标的子目标。但是,该功用的作业原理不同之处在于,每个子目标的激活设置已更改 - 整个层次布局能够翻开、封闭,但子目标无法“记住”自个的初始状态。为防止破坏旧代码,在 4.0 的 API 中保留了 SetActiveRecursively,但不建议运用,将来可能会将其删去。在特别情况下,比方实际上您想更改子目标的 activeSelf 设置,您能够运用以下代码:-

// JavaScript
function DeactivateChildren(g: GameObject, a: boolean) {
g.activeSelf = a;

for (var child: Transform in g.transform) {
DeactivateChildren(child.gameObject, a);
}
}


// C#
void DeactivateChildren(GameObject g, bool a) {
g.activeSelf = a;

foreach (Transform child in g.transform) {
DeactivateChildren(child.gameObject, a);
}
}

本文章由游戏蛮牛unity3d脚本整理推荐

0 0
原创粉丝点击