Unity2D:实例化多个预制件

时间:2018-08-09 13:27:12

标签: unity3d

我有一个带有多个精灵的复合预制件,并附加了一个脚本。问题是,当我多次实例化它时,实例变得疯狂:

  1. 它们在屏幕上的位置部分确定,部分由编辑器中的预制设置决定。但是Debug.Log显示所有实例的transform.position变量都设置为相同的值。 (这是最后一次实例化所使用的值。)

  2. 通过GetComponent <>访问其脚本时,其行为异常。它无法正确访问某些成员。 (很难定义。)

以下是实例化预制件的功能:

private GameObject SpawnEntity(GameObject p, Vector2 coords)
    {
        Instantiate(p);
        ...
        p.transform.position = coords;
        return p;
    }

它被这样称呼:

public GameObject humanoid;
...
SpawnEntity(humanoid, new Vector2(-1,-3));

Unity版本为2018.2.1f1。

1 个答案:

答案 0 :(得分:1)

问题是您要更改引用的游戏对象而不是实例化对象的位置。您需要像这样创建对实例化对象的新引用:

add

我想如果您在返回的对象上使用GetComponent的话,这也会解决第二个问题,因为您以前是返回原始的预制件而不是实例化的对象。