从另一个转换的脚本中获取公共数据成员';的孩子

本文关键字:数据成员 孩子 获取 转换 另一个 脚本 | 更新日期: 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。当然,除非您希望它是一个私有或静态方法。