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

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

Immediately Freeze!

重くなる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

gist.github.com

解説

解説するほどではないですが、List<T>に変えて、Addしています。

実行

実行して、Verticesなどをクリックすると、、、

f:id:norlself66:20150505093648p:plain

なにも問題なく出来ました。

 

これで、NullReferenceExceptionを出さずに済みました。

 

ここで次に、Meshの性質(特にVertices,UV,Trianglesの関係)を抑えてみると、、、

  • VerticesとUVは同じ数(頂点で同数)
  • Trianglesは3つずつ指定(頂点3つで1つの三角形)
  • 法線ベクトルやBoundsも再計算*1

などが有ります。しかし、今のままではおかしいので、今度からそれを変えてみたいと思います。

*1:法線ベクトルは、座標に対して垂直なベクトル。光の反射などの時に使う。Boundsは3次元空間の範囲のこと。これも使うらしい