我有一个带有多个精灵的复合预制件,并附加了一个脚本。问题是,当我多次实例化它时,实例变得疯狂:
它们在屏幕上的位置部分确定,部分由编辑器中的预制设置决定。但是Debug.Log显示所有实例的transform.position变量都设置为相同的值。 (这是最后一次实例化所使用的值。)
通过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。
答案 0 :(得分:1)
问题是您要更改引用的游戏对象而不是实例化对象的位置。您需要像这样创建对实例化对象的新引用:
add
我想如果您在返回的对象上使用GetComponent的话,这也会解决第二个问题,因为您以前是返回原始的预制件而不是实例化的对象。