Unity|Prefabから生成したGameObjectを一まとまりにしてその数をGUIに表示するサンプルコード

2013.02.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

シーンはかなり限定的ですがメモとして。

準備

  1. 空のGameObjectを作成(Shift+Ctrl+N)して下記のようなコードを記述
  2. Inspectorで変数prefabに生成したいGameObject(ここでは好きなPrefab)を代入
  3. 実行

サンプルコード

#pragma strict

var prefab:GameObject; //生成する対象(Inspectorから代入)
private var _count:uint;//生成数

function Update () {
	//左クリック押してる間
	if(Input.GetMouseButton(0)){
		//prefabに指定されたGameObjectを生成
		var obj = Instantiate(prefab, transform.position, transform.rotation);
		//生成されたGameObjectを自身に格納
		obj.transform.parent = transform;
	}
	//自身に格納されたGameObjectの数を返す
	_count = transform.GetChildCount();
}

function OnGUI () {
	//GUI用の矩形生成
	var rect:Rect = Rect(10, 10, Screen.width, Screen.height);
	//矩形にラベル(生成数)を描画
	GUI.Label(rect, "Count:" + _count);
}

まとめ

実行すると左クリックしている間、指定したPrefabが空オブジェクト内にモリモリ生成され、画面左上にはその数がリアルタイムで表示されます。
単純に同じ座標にオブジェクトを連続生成しているので、それがRigidbodyだったりすると互いに反発して気持ち悪いことなると思いますが。。

またサンプルではUpdate()の中でGetChildCount()を呼び続けていますが、実際にはGameObject数に変化が起こるタイミングや、何秒に一回などのタイミングに変更にすることで負荷を抑えられると思います。