重くなるUnity 30 Arrayとforeach 「エクステンド!!4」
今回はAddPartsボタンを設定しました。Toolbarの設定はなかなか問題があって進みませんでした。そして、ArrayListとForeachも使います。
Script:KplaMeshEditor.cs
特にToolbarの設定が妙に解らなかったりしました。色々と調べたりした結果、こんなかんじになりました。(実はまだちゃんと動作しない)
解説
なんとも汚いのはまだ試しているだけだからです。すみません。
まず汚くなっているFieldにArrayListというのが追加されています。ArrayListはArrayを処理するときにつかうClassです。
Arrayと言うのは英語で配列のことを言いますが、プログラム的には「コレクション」という部類に入ります。
まず、配列というものがC#では例えば string = {"xxx","AAA"};という風に定義します。この時配列には2つの値が入っていますが、配列の大きさ(サイズ、中に入れられる値(要素)の数)はこの時に入れた値の数でそれ以降変えられなくなってしまいます。特に今回のようなAddして、配列に入れていくようなものだと制限されると困ります。
そこでArrayを使います。Arrayのようなコレクションは制限はありません。((細かく言うとあります。それはArrayの場合は要素の大きさが2GB以上だと出来ません。また、それをなくすことが出来てもパソコンのスペック的に制限は有ります。))
Arrayに値を追加するには Field.Add = Param;という風にします。FieldはArrayListのフィールド、Paramは値です。
ただ、Arrayには注意点が有ります。それはArrayが保存する値の型が「Object」ということです。Objectにしてあるのはどんな型でも使えるからで良い機能ですが、読み込むときにはそれぞれの型にキャストしてから使わなければいけません。
そこで、今回はArrayListをStringにして表示することにしました。やり方は、
Strings = (string[])Field.ToArray(typeof(string));
です。ToArrayというのはArrayListをArray(配列)に変換するものです。似たようなものにToStringがあります。(ArrayListをToArrayする。ってなんか変な感じ)
そして、それぞれのPartsボタンを押すことでArrayListに文字列を追加していきます。
そしてその文字列を見せる(PartsView)のですが、ここで使っているのがforeach#です。foreachは配列の中の値を最初からすべて処理していく演算子です。使用法は、
foreach(field in array){
と言った感じです。arrayを指定してその中のfield(ここで定義してもいい)を繰り返すといった感じです。今回はLabelに貼り付けています。
(途中にあるUpdate()はほぼ意味が無いようです。なんとなく付けました)
実行
これで実行すると、、、
最初はこんなかんじです。そしてAddPartsのボタンを押すと…
このように下にnew~~~という風に出てきます。
今度はまずScriptを綺麗にしてから、Toolbarを直したりしようと思います。