Unity-gameobject-destruction
Unity-GameObject Destruction
GameObjectsの破壊は、インスタンス化と同じくらい重要です。 この章では、GameObjectを破壊する方法を学びます。
幸いなことに、GameObjectsを破棄するのは、作成するのと同じくらい簡単です。 破棄するオブジェクトへの参照が必要なだけで、この参照をパラメーターとして* Destroy()*メソッドを呼び出します。
ここで、割り当てられたキーが押されたときに自身を破壊する5つの六角形を作成してみましょう。
*HexagonDestroyer* という新しいスクリプトを作成し、Visual Studioで開きます。 まず、公開の *KeyCode* 変数を作成します。 KeyCodeは標準キーボードのキーを指定するために使用され、そのメソッドのInputクラスはそれを使用します。 以前にRigidbodyとPrefabsで行ったように、この変数をパブリックにすることで、エディターからアクセス可能にできます。 変数を公開する場合、「KeyCode.A」などの値をコードに*ハードコード*する必要はありません。 コードは、必要な数のオブジェクトで柔軟に作成できます。
public class HexagonDestroyer : MonoBehaviour {
public KeyCode keyToDestroy;
//Update is called once per frame
void Update () {
if (Input.GetKeyDown(keyToDestroy)) {
Destroy (gameObject);
}
}
}
メソッドで「gameObject」という名前の変数(小さなg、大文字のO)をどのように使用したかを観察します。 ( GameObject 型の)この新しい gameObject 変数は、このスクリプトが関連付けられているgameObjectを参照するために使用されます。 このスクリプトを複数のオブジェクトにアタッチすると、この変数が関係するときはすべて同じように反応します。
ただし、両者を混同しないでください。
- 大文字のGとOを持つ GameObject は、すべてのGameObjectを包含する class であり、Instantiate、Destroy、およびコンポーネントを取得するメソッドなどの標準メソッドを提供します。
- small gおよび大文字のOを持つ gameObject は、このスクリプトが現在接続されているgameObjectを参照するために使用されるGameObjectの特定の*インスタンス*です。
コードをコンパイルして、Unityに戻りましょう。
次に、新しい六角形のスプライトを作成し、スクリプトを添付します。 次に、階層内のgameObjectを右クリックし、 Duplicate を選択します。 階層に新しいスプライトが作成されます。 *移動*ツールを使用して位置を変更する必要があります。 手順を繰り返して、同様の六角形を作成します。
各六角形をクリックして、スクリプトコンポーネントを確認します。 個々のキーを設定して、そのキーが押されたときにGameObjectがそれ自体を破棄できるようになりました。 たとえば、5つの六角形を作成し、A、S、D、F、およびGキーが押されたときに破壊するように設定します。
複数の六角形に同じキーを設定できます。キーを押すと、すべてが同時に破壊されます。これは、 gameObject 参照の使用例です。この参照を使用すると、スクリプトを使用して個々に設定せずに個々のオブジェクトを参照できます。
同じキーを複数の六角形に設定できます。キーを押すと、すべてが同時に破壊されます。これは、 gameObject 参照の使用例です。この参照を使用すると、スクリプトを使用して個々に設定せずに個々のオブジェクトを参照できます。
GameObjectを破壊しても、オブジェクトが粉砕または爆発するわけではないことを理解することが重要です。 オブジェクトの破棄は、ゲーム(およびそのコード)に関する限り、その存在を単純に(すぐに)停止します。 このオブジェクトとその参照へのリンクは現在切断されており、それらのいずれかにアクセスまたは使用しようとすると、通常エラーとクラッシュが発生します。