【Unity】複数のマテリアルをスクリプトで変更する方法

オブジェクトに複数のマテリアルがついている場合に変更する方法をメモ。

gameObject.GetComponent<Renderer>().materials[1] = mat;

このように配列でマテリアルを指定すれば良いと思ったが動作せず。

以下のように配列ごと入れ替えると動作した。

Material[] tmp = gameObject.GetComponent<Renderer>().materials;
tmp[1] = mat;
gameObject.GetComponent<Renderer>().materials = tmp;

追記

マテリアルの変更を応用すると、脱出ゲームのギミックなどが作成できます。

詳しくは以下の記事に記載しています。

https://ymgsapo.com/2022/02/25/unity-material-gimmick/

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog