トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

unity_script_multi_material

1オブジェクトに複数のマテリアルを指定


1つのメッシュに対して複数のマテリアルを割り当てることができます。

GameObject1つに対して「renderer.materials」に複数のマテリアルが格納されています。

// GameObject名「xxx」のものを検索.
GameObject gobj = GameObject.Find("xxx");

Debug.Log("Materials : " + gobj.renderer.materials.Length);

とすると、マテリアル数を取得できます。
「gobj.renderer.materials[i]」がi番目のMaterialの参照になります。

GameObjectとしては以下のように複数マテリアルを割り当てておきます。

MaterialsのSizeを2個以上入力すると、Element0/Element1/Element2のように複数のマテリアルを割り当てる領域が出てきます。

 Meshの面でのマテリアル指定


ポリゴンメッシュの作成」のMeshにて指定。
SubMeshとして面ごとにグループ化されています。
このSubMeshごとにマテリアルが割り当てられることになります。

// triangles0に2つの三角形、triangles1に4つの三角形を格納したとする。.
int [] triangles0 = new int[2 * 3];
int [] triangles1 = new int[4 * 3];

Mesh.subMeshCount = 2;             // 2つのSubMeshを格納できるように指定.
Mesh.SetTriangles(triangles0, 0);  // 0番目のSubMeshを格納.
Mesh.SetTriangles(triangles1, 1);  // 1番目のSubMeshを格納.

「Mesh.subMeshCount」に使用するSubMesh数を指定します。これがないと、SetTrianglesで三角形情報を格納する際にエラーになります。
2つのマテリアルをMeshに割り当てている場合は、1番目のSubMeshが未使用でも2を指定する必要があります。
「Mesh.SetTriangles」で0番目のSubMeshにのみ三角形の頂点インデックスを格納したときは、「Mesh.triangles = triangles0;」とした場合と同じ意味になるようです。



最終更新時間:2014年01月08日 15時30分36秒