Unityでオブジェクトのマテリアルを変更する話
Unityで動的にマテリアルを変更したい、的なことがしたい場合
GameObject obj = xxxxxx; //適当な読み込み Material mtl = yyyy; //適当な読み込み obj.GetComponent<Renderer>().material = mtl;
のようにするのですが、僕は勝手に
obj.GetComponent<Renderer>().material = mtl;
と
obj.GetComponent<Renderer>().materials[0] = mtl;
が同じ振る舞いをするものだと思っていました。
どうも違うみたいで、前者だと意図したふるまいになるのですが、後者の場合、以下の画像のようにDefault Materialが割り当てられてしまうみたいです。
(MeshRendererの部分です)
どう違うのかはまた調査します