返回介绍

停用游戏对象 (GameObjects)

发布于 2021-06-19 18:03:18 字数 1105 浏览 893 评论 0 收藏 0

可将一个游戏对象 (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);
	}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文