logo

プレハブとインスタンス化について理解する

キャラクターやオブジェクトをインスタンス化して破棄することは、どのゲームでも非常に一般的です。インスタンス化とは、オブジェクトを存在させることを意味します。ゲーム内ではオブジェクトが出現、生成、生成され、敵が死亡し、GUI 要素が消滅し、シーンがゲーム内に常に読み込まれます。

プレハブは、実行時に複雑なゲームオブジェクトまたはゲームオブジェクトのコレクションをインスタンス化する場合に非常に役立ちます。コードを使用してゲームオブジェクトを最初から作成する場合と比較して、コードを使用してプレハブをインスタンス化する方が優れており、多くの利点があります。

math.random Java

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

プレハブ ゲームオブジェクトの設計図のようなものです。したがって、プレハブは、シーンの作成時に存在しなかった場合でも、複製してシーンに配置できるゲームオブジェクトのコピーであると言えます。つまり、プレハブを使用してゲームオブジェクトを動的に生成できます。

プレハブを作成しましょう。このためには、目的のゲームオブジェクトをシーン階層からプロジェクトのアセットにドラッグする必要があります。

プレハブとインスタンス化について理解する

ここで、GameObject をインスタンス化するには、スクリプト内で Instantiate() メソッドを呼び出します。このメソッドは MonoBehaviour で使用でき、パラメータとして GameObject を受け取るため、どの GameObject を作成または複製するかを認識します。また、新しくインスタンス化されたオブジェクトの変換や親子関係を変更するためのさまざまなオーバーライドもあります。

次に、Instantiator.cs という新しいスクリプトを作成し、その中に次のコードをコピーします。

 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Instantiator : MonoBehaviour { public GameObject Diamond; // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Space)) { Instantiate(Diamond); } } } 

上記のプログラムでは、Input クラスの GetKeyDown メソッドを使用して、プレーヤーが最後のフレーム中に特定のボタンを押したかどうかを確認しました。 GetKeyDown() メソッドは、KeyCode 列挙型 (標準キーボードで使用可能なすべてのキーをリストするために使用されます) で指定されたキーがそのフレーム内で押された場合に true を返します。

スクリプトを保存します。次に、「階層」タブからシーンを右クリックして、空のゲームオブジェクトを作成します。

プレハブとインスタンス化について理解する

そのスクリプト ファイル (Instantiator.cs) を、[インスペクター] タブから新しく作成したゲームオブジェクトのコンポーネントにアタッチします。

次に、作成したプレハブを Diamond 変数にドラッグします。

プレハブとインスタンス化について理解する

ここでゲームを実行するときに、スペースバーを押すと、プレハブの作成に使用したものと同じ新しい Diamond オブジェクトが作成されます。各ダイヤモンドがオブジェクト階層で作成されていることがわかります。それらがゲーム内に表示されない理由は、当面、すべてが正確に交互に作成されているためです。ただし、[階層] タブから確認できます。スペースバーを押すたびに、タブにダイヤモンド(クローン)として表示されます。

プレハブとインスタンス化について理解する