原文链接:https://docs.unity3d.com/Manual/CreateDestroyObjects.html
一些游戏场景中会保存有一定数量的物体,但是对角色,宝物和其他的物体在游戏过程中会被不断创建,和移除。在Unity中,一个GameObject能使用Instantiate函数来创建,它能创建一个现有物体的复制品。
public GameObject enemy;
void Start() {
for (int i = 0; i < 5; i++) {
Instantiate(enemy);
}
}
值得注意的是,那些复制品不用从场景中现有的物体来创建。更常用的方法是使用Prefab,从编辑器里的项目栏里中抓取一个到声明为public的变量里。同时,初始化一个GameObject ,会复制所有目前挂在它上面的Component。
Destory()函数可以销毁一个物体,在一帧刷新结束之后或可以在一个短暂的延迟之后执行。
void OnCollisionEnter(Collision otherObj) {
if (otherObj.gameObject.tag == "Missile") {
Destroy(gameObject,.5f);
}
}
值得注意的是,Destroy函数可以单独销毁一个物体的组件而不影响物体本身。一个常见的错误地是写成下面这样:
Destroy(this);
这只销毁那个调用它的脚本,而不会销毁这句话所在的脚本文件。