我使用下面的代码以编程方式创建了预制件的克隆。当我尝试以预制模式调整预制大小时,没有任何克隆被更新。我使用一个简单的精灵图像创建了预制件,并使用公共GameObject属性通过检查器将其添加。
or (int i = 0; i < tar.numOfItems; i++)
{
var rot = Quaternion.Euler(0f, 0f, tar.spin + angle);
var localPos = rot * Vector3.right * tar.radius;
tar.spawnedObjects.Add(Instantiate(tar.clonedObject,
tar.transform.position + localPos, rot));
angle += angleBetween;
tar.spawnedObjects[i].name = tar.spawnedObjects[i].name + (i + 1);
}
因此clonedObject是通过检查器添加的公共GameObject字段。在更新问题之前,我是否以正确的方式创建了预制克隆? 请注意,我正在使用Unity 2019.1。
答案 0 :(得分:1)
由于我正在使用Unity 2019.1
,所以我想使用PrefabUtiltity.InstantiatePrefab实例化预制件,但是我将其实例化为通常的游戏对象样式实例化。
for (int i = 0; i < tar.numOfItems; i++)
{
var rot = Quaternion.Euler(0f, 0f, tar.spin + angle);
var localPos = rot * Vector3.right * tar.radius;
tar.spawnedObjects.Add(PrefabUtility.InstantiatePrefab(tar.clonedObject as GameObject) as GameObject);
tar.spawnedObjects[i].transform.position = tar.transform.position + localPos;
tar.spawnedObjects[i].transform.rotation = rot;
angle += angleBetween;
tar.spawnedObjects[i].name = tar.spawnedObjects[i].name + (i + 1);
}
答案 1 :(得分:0)
使用这个是什么? tar.spawnedObjects [i] .transform.SetParent(tar.ClonedObject);