无法重新实例化/重生已在Unity3D中销毁的对象

时间:2017-11-13 16:18:13

标签: c# unity3d

我有2个脚本。 1制造物体,而另一个制造它们。

我首先按下运行脚本#1的OnSave按钮并创建我的对象。 (这里不止一个,虽然脚本中只显示一个,但为了提问我缩短了)

然后按OnReset按钮,销毁已创建的对象/预制件。但是,当我再次按OnSave时,它不会重新创建对象。

这2个脚本附加到2个不同的游戏对象

这就是我所拥有的:

脚本#1:

public GameObject go;
public static volatile List<GameObject> prefab = new List<GameObject>();


public class OnSave : MonoBehaviour
{
public void Start2()
{
                var newObj = Instantiate(go);
                newObj.transform.parent = GameObject.Find("MOOSE").transform;
                newObj.GetComponent<Renderer>().material.color = Color.green;
                newObj.transform.localPosition = new Vector3(1.0,1.0,1.0)
                prefab.Add(newObj);


}
}

脚本#2

public class OnReset: MonoBehaviour
{
foreach (GameObject obj in prefab)
{
Destroy(obj);
}
}

我使用的是最新版本的Unity。我必须销毁这些对象并重新创建它们

1 个答案:

答案 0 :(得分:3)

你需要一个预制件才能重新实例化该对象,但是破坏和重新实例化的操作很重,所以通常使用类似https://www.assetstore.unity3d.com/en/#!/content/47242的池化管理器(免责声明:我是作者)这一个)或https://www.assetstore.unity3d.com/en/#!/content/23931

这是关于汇集对象的官方Unity论坛:https://unity3d.com/learn/tutorials/topics/scripting/object-pooling