将Prefab的子代附加到公共变量上或访问Prefab的子代

时间:2019-01-29 21:04:46

标签: unity3d

Unity新编辑器(2018.3)引入了嵌套式预制件。有谁知道如何将预制件的子代分配给公共变量?

例如:

我有一条带有父GameObject的绳索,而孩子在所有关节上。

我想访问1个关节的刚体,因此我设置了一个公共游戏对象来访问它,但是我只能选择父对象而不是子对象或关节。

有人知道如何,还是有办法访问预制件的子对象?

例如:我的代码如下

   public GameObject player;
   Rigidbody2D rb;

void Start()
{
    player = GameObject.FindGameObjectWithTag("Player");
    rb = player.GetComponent<Rigidbody2D>();
    Debug.Log(player.name);
}

im试图通过上述代码访问父游戏对象上的嵌套pres that,但即时获得了Null Reference Exception。我在做什么错了?

2 个答案:

答案 0 :(得分:0)

我不知道我是否完全理解这个问题,但是我想我可以为您提供一些帮助。如果要访问GameObject或Joints组件中的Child,可以在here中进行操作。

还请注意,您要求的不是GameObject是GameObject [],而是其标记相同的所有GameObject的数组。确保您的GameObject标签是您所要的,然后将GameObject放入数组并要求第一个。

GameObject[] player = GameObject.FindGameObjectsWithTag("Player");
rb = player[0].transform.GetComponent<RigidBody>();

我希望它能帮上忙。

答案 1 :(得分:0)

所以我意识到我必须区别对待游戏对象和组件(对不起,我),所以我像下面那样设置了代码,这样我就可以抓住预制件的孩子了

  void Start()
{
    checkSleeping = false;
    joint = player.transform.Find("Joint 0").gameObject;
    jointRB = joint.GetComponent<Rigidbody2D>();
    Debug.Log("Found Him");
}