Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

高速化:組み込み(ビルトイン)配列を使う

Unity Script Reference – Array
一般にスクリプトで配列を定義する際は、

 var array = new Array (Vector3(0, 0, 0), Vector3(0, 0, 1));

のようにする。これをjavascript配列と呼ぶ。値を指定しない場合のデフォルトは"null"になる。

一方、ビルトイン配列とは

var builtIn : float[];

のように定義し、Unity Editorで値を指定するもの。インスペクタで配列サイズ(Size)を入れると、対応した数のElementが表示されるので、ひとつずつ値を入力する。
f:id:yasuda0404:20120811201800p:plain

あるいは、

var myBuiltInArray = new float[3];
myBuiltInArray[0] = 12.5;
myBuiltInArray[1] =  3.4;
myBuiltInArray[2] = -9.3;

のように作成もできる。数値型で値をしていない場合、デフォルトは"0"(ゼロ)。javascript配列と異なるので注意。

ビルトイン配列はjavascript配列に比べ高速。速度クリティカルな場合はビルトイン配列を使う方がよい。

ただし、ビルトイン配列は配列要素の数を変更できない。つまり、push()などのメソッドが使えない。

そこで、javascript配列をビルトイン配列に変換するのが、Array.ToBuiltin()メソッドを使う手がある。

function Start () {
	var array = new Array(1.2,5.6,3.8); //要素数3のArrayを定義
	print (array);
	array.Push(4.3); //4つ目の要素を加える
	var builtIn:float[] = array.ToBuiltin(float); //ビルトイン配列に代入
	var sum:float =0.0;
	for (elem in builtIn){
		print(elem);
		sum += elem;
	}
	print (sum);
}

とする。