创建和销毁游戏对象
某些游戏在场景中维护恒定数量的对象,但是在游戏过程中,创建和移除人物、物品以及其他对象也非常普遍。在 Unity 中,一个游戏对象可以通过 Instantiate 函数创建一个已有对象的新副本。
public GameObject enemy;
void Start() {
for (int i = 0; i < 5; i++) {
Instantiate(enemy);
}
}
需要注意的是,被复制的原始对象不一定必须是场景中的对象。比较常见的是,将一个预制对象拖动到编辑器项目视图的一个公共变量上。而且,初始化一个游戏对象将复制原始对象上的所有组件。
还有一个 Destroy 函数用于在桢更新完成之后或者一段可选的短暂延迟之后销毁对象:
void OnCollisionEnter(Collision otherObj) {
if (otherObj.gameObject.tag == "Missile") {
Destroy(gameObject,.5f);
}
}
请注意,Destroy 函数可以单独销毁某些组件而不影响游戏对象本身。下面是一个常见的错误:
Destroy(this);
上面这行代码实际上只是销毁被调用的脚本组件,而不是绑定了该脚本组件的游戏对象。