Unity3d Unity2D:实例化多个预置
我有一个带有多个精灵和一个附加脚本的复合预置。问题是,当我多次实例化它时,实例会变得疯狂: 它们在屏幕上的位置部分正常,部分由编辑器中预置的设置决定。但是Debug.Log显示transform.position变量对于所有实例都设置为相同的值。它是上次实例化使用的值 当GetComponent访问它们的脚本时,它们的行为异常。它无法正确访问某些成员。定义起来很复杂 下面是一个实例化预置的函数:Unity3d Unity2D:实例化多个预置,unity3d,Unity3d,我有一个带有多个精灵和一个附加脚本的复合预置。问题是,当我多次实例化它时,实例会变得疯狂: 它们在屏幕上的位置部分正常,部分由编辑器中预置的设置决定。但是Debug.Log显示transform.position变量对于所有实例都设置为相同的值。它是上次实例化使用的值 当GetComponent访问它们的脚本时,它们的行为异常。它无法正确访问某些成员。定义起来很复杂 下面是一个实例化预置的函数: private GameObject SpawnEntity(GameObject p, Vecto
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。问题在于您正在更改被引用游戏对象的位置,而不是实例化对象的位置。您需要创建对实例化对象的新引用,如下所示:
private GameObject SpawnEntity(GameObject p, Vector2 coords)
{
Gameobject myobj = Instantiate(p);
...
myobj.transform.position = coords;
return myobj;
}
如果您在返回的对象上使用GetComponent,我想这也可以解决第2个问题,因为您之前返回的是原始预置,而不是实例化的对象。它可以工作!谢谢你,我真不敢相信这是多么简单!我很愿意,但恐怕我没有足够的社区积分来支持这个选项。无论如何,我看不到它的按钮。