プレハブとインスタンス化を理解する

オブジェクトのインスタンス化と破棄は、ゲームプレイ中に非常に重要であると見なされます。インスタンス化とは、単に存在をもたらすことを意味します。アイテムはゲーム内に表示または「スポーン」し、敵は死に、GUI要素は消え、シーンはゲーム内で常に読み込まれます。不要なオブジェクトを適切に取り除く方法と、必要なオブジェクトを持ち込む方法を知ることは、さらに重要になります。

まず何を理解しましょう prefabsです。Unityでインスタンス化がどのように機能するかを理解するには、プレハブが重要であると考えられています。

Prefabs のような blueprintsGameObjectの。プレハブは、ある意味で、copyシーンの作成時に存在していなくても、複製してシーンに配置できるGameObjectの 言い換えれば、プレハブはdynamically generate GameObjects

プレハブを作成するには、目的のGameObjectをシーン階層からプロジェクトにドラッグするだけです。 Assets

ここで、GameObjectをインスタンス化するために、 Instantiate()スクリプトのメソッド。このメソッドは、MonoBehaviourは、GameObjectをパラメータとして受け取るため、作成/複製するGameObjectを認識します。また、新しくインスタンス化されたオブジェクトの変換を変更したり、ペアレント化したりするためのさまざまなオーバーライドもあります。

新しいインスタンス化を試してみましょう hexagon いつでも Space キーが押されました。

と呼ばれる新しいスクリプトを作成します Instantiatorそしてそれを開きます。の中にUpdate メソッド、以下のコードを入力します。

ここでは、 GetKeyDown の方法 Input最後のフレームでプレーヤーが特定のボタンを押したかどうかを確認するクラス。チェックし続けたいので入れますUpdate、1秒間に60回実行されます。GetKeyDownメソッドはtrue キーが指定されている場合 KeyCode 列挙型(標準キーボードで可能なすべてのキーを一覧表示)がそのフレームで押されます。

public class Instantiator : MonoBehaviour {
   public GameObject Hexagon;
   // Update is called once per frame
   void Update () {
      if (Input.GetKeyDown(KeyCode.Space)) {
         Instantiate(Hexagon);
      }
   }
}

上部のパブリックGameObject宣言は、前のレッスンでRigidbody2D用に作成したものと同様のスロットを作成します。このスロットはprefabs (編集者の時間で)そして gameObjects (実行時)ただし。

スクリプトを保存して、コンパイルします。完了したら、新しいを作成します。empty オブジェクト階層の右クリックメニューに移動し、を選択してGameObject Create Empty

このオブジェクトに、次のようなわかりやすい名前を付けます。 Instatiator Object新しく作成したスクリプトを添付します。GameObjectに表示されるスロットで、作成したプレハブをドラッグします。

ここでゲームを実行する場合、スペースバーを押すと、プレハブの作成に使用したものと同じ新しい六角形オブジェクトが作成されます。オブジェクト階層で作成されている各六角形を確認できます。それらがゲームに表示されない理由は、当分の間、それらがすべて作成されているためです。exactly 上下に。

次のレッスンでは、オブジェクト破壊の概念を理解します。