すぐに固まるパソコンを使う。

すぐに固まるパソコンを使って色々します(実はそんなすぐでもない)。基本的にプログラミング系が多いです。たまに違うことします。

Immediately Freeze!

重くなるUnity 30  Arrayとforeach 「エクステンド!!4」

今回はAddPartsボタンを設定しました。Toolbarの設定はなかなか問題があって進みませんでした。そして、ArrayListForeachも使います。

 

Script:KplaMeshEditor.cs

特にToolbarの設定が妙に解らなかったりしました。色々と調べたりした結果、こんなかんじになりました。(実はまだちゃんと動作しない)

gist.github.com

解説

 なんとも汚いのはまだ試しているだけだからです。すみません。

まず汚くなっているFieldArrayListというのが追加されています。ArrayListArrayを処理するときにつかうClassです。

Arrayと言うのは英語で配列のことを言いますが、プログラム的には「コレクション」という部類に入ります。

まず、配列というものがC#では例えば string = {"xxx","AAA"};という風に定義します。この時配列には2つの値が入っていますが、配列の大きさ(サイズ、中に入れられる値(要素)の数)はこの時に入れた値の数それ以降変えられなくなってしまいます。特に今回のようなAddして、配列に入れていくようなものだと制限されると困ります。

そこでArrayを使います。Arrayのようなコレクション制限はありません。((細かく言うとあります。それはArrayの場合は要素の大きさが2GB以上だと出来ません。また、それをなくすことが出来てもパソコンのスペック的に制限は有ります。))

Arrayに値を追加するには Field.Add = Param;という風にします。FieldArrayListのフィールド、Paramは値です。

ただ、Arrayには注意点が有ります。それはArrayが保存する値の型が「Object」ということです。Objectにしてあるのはどんな型でも使えるからで良い機能ですが、読み込むときにはそれぞれの型にキャストしてから使わなければいけません。

そこで、今回はArrayListStringにして表示することにしました。やり方は、

Strings = (string[])Field.ToArray(typeof(string));

です。ToArrayというのはArrayListArray(配列)に変換するものです。似たようなものにToStringがあります。(ArrayListをToArrayする。ってなんか変な感じ

 

そして、それぞれのPartsボタンを押すことでArrayListに文字列を追加していきます。

 

そしてその文字列を見せる(PartsView)のですが、ここで使っているのがforeach#です。foreachは配列の中の値を最初からすべて処理していく演算子です。使用法は、

foreach(field in array){

と言った感じです。arrayを指定してその中のfield(ここで定義してもいい)を繰り返すといった感じです。今回はLabelに貼り付けています。

 

(途中にあるUpdate()はほぼ意味が無いようです。なんとなく付けました)

実行

これで実行すると、、、

f:id:norlself66:20150406035400p:plain

最初はこんなかんじです。そしてAddPartsのボタンを押すと…

f:id:norlself66:20150406035429p:plain

このように下にnew~~~という風に出てきます。

 

今度はまずScriptを綺麗にしてから、Toolbarを直したりしようと思います。