シーンでオブジェクトを一定数にすることもありますが,キャラクター,アイテム,および他のオブジェクトをゲーム中に作成および削除することは頻繁にあります。Unity ではゲームオブジェクトの作成に Instantiate 関数を使用して既存オブジェクトを複製します:
public GameObject enemy;
void Start() {
for (int i = 0; i < 5; i++) {
Instantiate(enemy);
}
}
複製するオブジェクトはシーンにすでにあるものに限られます。エディター上ではプロジェクト パネルのパブリック変数にプレハブをドラッグする方法も頻繁に使用されます。さらにゲームオブジェクトをインスタンス化すると元のコンポーネント全てを複製します。
さらに Destroy 関数を使用してオブジェクトを削除します。フレーム更新の完了後かオプションで一定時間後に遅れて削除するか選べます:
void OnCollisionEnter(otherObj: Collision) {
if (otherObj == "Missile") {
Destroy(gameObject,.5f);
}
}
Destroy 関数によりゲームオブジェクトそのものに影響を与えずに個別コンポーネントを削除できることに留意して下さい。よくある間違いは次のように記述することです:
Destroy(this);
…実際には呼び出し元のスクリプト コンポーネントが削除され,スクリプトがアタッチされているゲームオブジェクトが削除されます。