创建和销毁游戏对象

某些游戏在场景中维护恒定数量的对象,但是在游戏过程中,创建和移除人物、物品以及其他对象也非常普遍。在 Unity 中,一个游戏对象可以通过 Instantiate 函数创建一个已有对象的新副本。

  1. public GameObject enemy;
  2. void Start() {
  3. for (int i = 0; i < 5; i++) {
  4. Instantiate(enemy);
  5. }
  6. }

需要注意的是,被复制的原始对象不一定必须是场景中的对象。比较常见的是,将一个预制对象拖动到编辑器项目视图的一个公共变量上。而且,初始化一个游戏对象将复制原始对象上的所有组件。

还有一个 Destroy 函数用于在桢更新完成之后或者一段可选的短暂延迟之后销毁对象:

  1. void OnCollisionEnter(Collision otherObj) {
  2. if (otherObj.gameObject.tag == "Missile") {
  3. Destroy(gameObject,.5f);
  4. }
  5. }

请注意,Destroy 函数可以单独销毁某些组件而不影响游戏对象本身。下面是一个常见的错误:

  1. Destroy(this);

上面这行代码实际上只是销毁被调用的脚本组件,而不是绑定了该脚本组件的游戏对象。