重くなるUnityを使う 18 「ビルディング3」
更にScriptを簡潔なものにするため、新しいScriptを作ります。(?)それは、部屋のことをしてくれるクラスにするので、「Heyas」としました。
また、Heya_1.csはこのようにします。
まず、新しく作ったHeyasクラスを説明します。
Heyasクラスはメソッドを作っている(だけ)ためにMonoBehaviourクラスを使いません。なので、宣言から参照を抜いています。
次に、まだ使っていませんがHeyaTypeというのを宣言しています。これはHeyasクラスで作るHeyaのタイプを設定するものです。(予定)
次のpublic Heyas(~~)は、Heyasクラスのインスタンスを作っています。これはたくさん作れます。種類があると、用途によって呼び出し方が決めやすくなります。
Heya()は何も設定せずにSimpleHeyaを(0,0,0)に作ります。
Heya(x,y,z)は(x,y,z)にSize1のSimpleHeyaを作ります。
Heya(x,y,z,Size)は(x,y,z)にSizeを決めてもらってSimpleHeyaを作ります。
Heya(~~)内では最初に宣言したpos(Position)などの値に呼び出した側からの値を代入しています。この float pos と言うのは配列と言い、値を{xx,xx,xx}というように宣言できるフィールドです。配列は、 型名 名前; で宣言します。代入するときは、 名前[番号] = 代入値; とします。番号は配列に入れた値の順番で、注意するところは、0から始まるということです。
また、配列宣言時に値を入れるときは、型名[] 名前 = {値1,2,3…}; とします。
中で呼び出しているcreateSimpleHeya(pos,rot,sca);はHeyas内にあるメソッドです。ちなみに、このように作ったメソッドは「関数」というようです。(コルーチンじゃなかったでした)
そのcreateSimpleHeyaの説明をします。まだ少し(壁1つ)しか設定していませんが、まずkabe1(GameObject)のインスタンスを設定しています。代入値の
GameObject.CreatePrimitive (Type)はゲームオブジェクトのタイプを指定してそのオグジェクトを作ってくれるというものです。PrimitiveはUnityが指定している最初からあるオブジェクトです。(つまり「初期装備」みたいなもの)
TypeはPrimitiveType.Cube(Cubeですね)にしました。他にも有ります。
また、kabe1の名前も設定しています。
setKabeTrans(~~)はこの前にもやった壁の設定メソッドです。これをkabe1に設定します。
これでHeyas.csの構造が分かりました。次にHeya_1.csの変更点を説明します。
まずHeyasクラスを宣言します。そしてStart()内でPositionを決めてインスタンスを代入しています。このようにすることでスッキリしました。
他のクラスにまとめたのは、Heya_2 Heya_3などとたくさん作っていく時に一つ一つ宣言するのは大変だからです。また、変更もHeyasクラスだけで済むので簡単です。
ちなみに実行すると、、、
そして、Hierarchyに"kabe1"が出来ました。