Version: 2019.1
Administrador del Tiempo y Framerate
Coroutines (corrutinas)

Creando y destruyendo GameObjects.

Algunos juegos mantienen un número constante de objetos en la escena, pero es muy común para los personajes, tesoros y otros objetos ser creados y eliminados a la hora de jugar (gameplay). En Unity, un GameObject puede ser creado utilizando la función Instantiate la cual crea una nueva copia de un objeto existente:

public GameObject enemy;

void Start() {
    for (int i = 0; i < 5; i++) {
        Instantiate(enemy);
    }
}

Observe que el objeto del cual la copia es realizada no requiere estar presente en la escena. Es más común usar un prefab arrastrado a una variable pública desde el Project panel (panel del Proyecto) en el editor. También, crear instancias de un GameObject copiará todos los Componentes presentes en el original.

También hay una función Destroy que permite destruir un objeto después que la actualización del frame haya terminado u opcionalmente después de un retraso de tiempo corto:

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

Observe que la función Destroy puede destruir componentes individuales sin afectar el GameObject en sí. Un error común es escribir algo como:

 Destroy(this);

…lo cual realmente solo destruirá el componente del script que le llama en vez de destruir el GameObject al cual el script está atado.

Administrador del Tiempo y Framerate
Coroutines (corrutinas)
Copyright © 2023 Unity Technologies
优美缔软件(上海)有限公司 版权所有
"Unity"、Unity 徽标及其他 Unity 商标是 Unity Technologies 或其附属机构在美国及其他地区的商标或注册商标。其他名称或品牌是其各自所有者的商标。
公安部备案号:
31010902002961