Nanashi-softプログラマ専用Unityでゲーム開発


◇Unityでゲーム開発 -JavaScriptでオブジェクト生成-

最初からシーン内に全てのオブジェクトを配置しておくのではなく,後から生成することはできないか?
そうすれば,必要が無い間はメモリを消費しないのではないか?
というわけで,やってみました

・リソースに Prefab形式(?)でモデルデータを格納する

Project内に Resourcesフォルダが無ければ,Projectタブのすぐ下にある Create→Filderで作成する

Resourcesフォルダをクリックして,Projectタブのすぐ下にある Create→Prefab
例えば PrefabTestと付けたとします

Project内のモデルデータを PrefabTestにドラッグ&ドロップする

Prefabと言うのは,実態の無い単なるリンク扱いになるという意味みたいなので,これでデータが倍増する事は無いと思います

・JavaScriptから呼び出す

いつでも呼び出せます。例えば,1キーを押すと表示されるようにしてみます
var object1 : GameObject;
function Update () {
	if(Input.GetKeyUp(KeyCode.Alpha1)){
		object1=Instantiate(Resources.Load("PrefabTest", GameObject), transform.position, Quaternion.identity);
	}
}
※この場合の1キーはテンキーじゃない方の1です

・JavaScriptから消去する

なぜ,object1をグローバル変数にしたのかと言うと,消去時に使うためです
2キーを押すと消去されるようにしてみます
function Update () {
	if(Input.GetKeyUp(KeyCode.Alpha2)){
		Destroy(object1);
	}
}

・移動や回転させる

Instantiateした object1は,通常のオブジェクトと同じように扱えます

X軸方向に5移動
object1.transform.position = Vector3(5.0, 0.0, 0.0);
Y軸回転
object1.transform.Rotate(0.0, 90.0, 0.0);


TOPプログラマ専用Unityでゲーム開発