重くなるUnity 35 List<てぃー> 「エクステンド!!8」
ArrayListは、「要素が増やせるけど、無駄に型変換する」というもので、何でも入れれるコレクションです。今回は、List<T>というものを使います。List<T>は「要素が増やせて、型変換しない」というものです。
List<T>は、List<Type>で、Typeに型を指定します。また、usingのところで
using System.Collections.Generic;
を指定しないと使えません。
しかし、Listに要素を入れることが出来て、エラーも少なく、安全で多様的な配列です。List<T>のようなものを、「ジェネリック」といいます。
ということで、MeshEditorを変えます。
Script:KplaMeshEditor.cs
解説
解説するほどではないですが、List<T>に変えて、Addしています。
実行
実行して、Verticesなどをクリックすると、、、
なにも問題なく出来ました。
これで、NullReferenceExceptionを出さずに済みました。
ここで次に、Meshの性質(特にVertices,UV,Trianglesの関係)を抑えてみると、、、
- VerticesとUVは同じ数(頂点で同数)
- Trianglesは3つずつ指定(頂点3つで1つの三角形)
- 法線ベクトルやBoundsも再計算*1
などが有ります。しかし、今のままではおかしいので、今度からそれを変えてみたいと思います。
*1:法線ベクトルは、座標に対して垂直なベクトル。光の反射などの時に使う。Boundsは3次元空間の範囲のこと。これも使うらしい