从另一个转换的脚本中获取公共数据成员';的孩子
本文关键字:数据成员 孩子 获取 转换 另一个 脚本 | 更新日期: 2023-09-27 18:00:56
我有一个gameObject'gm',它有一个脚本。该脚本引用了Transform parentFoo,并且需要访问一个非静态的公共int"x",该int存在并在作为组件附加到多个子"bar"的脚本中定义,这些子"bar"都是parentAFoo的子级。然后,我试图将所有这些int放入一个列表中,但问题在于实际获取它们。最简单的方法是什么?
下面的代码演示了我试图完成的任务,但它根本不起作用。
//defined in UnityEditor:
public Transform fooParent;
void blah () {
List<int> list = new List<int>();
for (int i = 0; i < fooParent.childCount; i++) {
Transform tempChild = Players.GetChild(i);
list.Add (tempChild.x);
}
}
任何关于你的答案为什么以及如何起作用的理论讨论都非常受欢迎:D("教人如何钓鱼…"(
EDIT:指定标题,将文本复制到stackoverflow;从Unity Answers b.c.问题中删除的链接已在此处完全解决
新代码:
public Transform fooParent;
public void blah () {
List<int> list = new List<int>();
for (int i = 0; i < fooParent.childCount; i++) {
Transform tempChild = fooParent.GetChild(i);
list.Add (tempChild.gameObject.GetComponent<ScriptName>().x);
}
}
这是因为.GetChild
返回一个变换,因此您必须从那里使用.gameObject
来获取该变换所附加的游戏对象。从那里,您可以使用.GetComponent<>()
访问附加到该游戏对象的组件(脚本、变换等(,其中<>括号中输入要访问的组件(在本例中为脚本(的名称。现在,在脚本的控制下,您可以使用.variableName
访问其变量。最后,void blah
应该是public void blah
。当然,除非您希望它是一个私有或静态方法。