脚本中的预制克隆无法更新

时间:2019-02-14 19:19:24

标签: unity3d

我使用下面的代码以编程方式创建了预制件的克隆。当我尝试以预制模式调整预制大小时,没有任何克隆被更新。我使用一个简单的精灵图像创建了预制件,并使用公共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。

2 个答案:

答案 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);