シーン上でオブジェクトを一定数維持することもありますが、キャラクター、アイテム、および他のオブジェクトをゲーム中に作成/削除することは頻繁にあります。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);
このようにした場合は呼び出し元のスクリプトコンポーネントが削除され、スクリプトがアタッチされていたゲームオブジェクトは削除されません。