WisdomSoft - for your serial experiences.

ゲームオブジェクトの作成

Unity シーン内に配置される全てのオブジェクトは、可視不可視を問わず GameObject クラスのオブジェクトです。GameObject はスクリプトから生成し、制御できます。

空のオブジェクトをシーンに追加する

Unity エディタの「GameObject」メニューからシーンに追加できるオブジェクトは、すべて UnityEngine.GameObject クラスのインスタンスです。シーンに追加されているオブジェクトは、すべて Unity エディタ上の「Hierarchy」ウィンドウに表示されます。

UnityEngine.GameObject クラス
UnityEngine.Object
    UnityEngine.GameObject
public class sealed GameObject : Object

スクリプトから明示的に GameObject クラスをインスタンス化してオブジェクトを生成できます。このクラスのコンストラクタはオーバーロードされています。

GameObject クラスのコンストラクタ
public GameObject()
public GameObject(string name)
public GameObject(string name, System.Type[] components)

name パラメータにはオブジェクトの名前を指定します。この名前はオブジェクトを識別するために用いられ Unity エディタ上の「Hierarchy」ウィンドウなどに表示されます。パラメータを渡さなかった場合はデフォルトの名前のオブジェクトが生成されます。

components パラメータには、生成したオブジェクトに追加するコンポーネントの型を配列で指定します。コンポーネントについては後述するので、この場ではコンポーネントを持たない空のオブジェクトを作成してみましょう。

コード1
using UnityEngine;

public class Test : MonoBehaviour
{
	void Start()
	{
		GameObject obj = new GameObject();
	}
}
実行結果
コード1 実行結果

コード1は GameObject クラスのパラメータを受け取らないコンストラクタを呼び出し、スクリプトから空の GameObject インスタンスを生成しています。

Start() メソッド内で生成した GameObject はローカル変数に保存しているだけで利用はしていません。しかし、Start() メソッドが終了してインスタンスへの参照がなくなっても、GameObject オブジェクトは Unity エンジンによって管理されているためガベージコレクションによって自動的に削除されることはありません。

空のゲームオブジェクトは座標を持っていますが、それ以外の役割はありません。ゲームオブジェクトにコンポーネントを追加することで、描画や多様な振る舞いを実装できます。