首页 > 解决方案 > 如何在不拖放序列化引用的情况下激活脚本中的子项?

问题描述

我有一个名为“Wizzard”的预制件,带有子“isActiveArrow”,使用精灵渲染器。在 Wizzard 的Player.cs脚本中,我试图激活isActiveArrow.

我这样做[SerializeField] private GameObject arrow;

然后使用arrow.SetActive(true);

但是我必须将子 isActiveArrow 拖放到序列化字段中。

如果没有直接引用孩子的序列化字段,我怎么能做到这一点?

就像是: this.isActiveArrow.SetActive(true);

标签: c#unity3d

解决方案


如果“isActiveArrow”始终位于“Wizzard”的相同子索引(检查器中相对于其上方其他子对象的位置),则以下代码将起作用:

gameObject.ransform.GetChild(index).gameObject.SetActive(true)

GetChild 函数列出当前变换的所有子代。通过在 () 中传递一个索引,您可以访问该索引处的子对象。


推荐阅读