• 创建和销毁游戏对象

    创建和销毁游戏对象

    某些游戏在场景中维护恒定数量的对象,但是在游戏过程中,创建和移除人物、物品以及其他对象也非常普遍。在 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);

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