我有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。我必须销毁这些对象并重新创建它们
答案 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