オブジェクトに複数のマテリアルがついている場合に変更する方法をメモ。
gameObject.GetComponent<Renderer>().materials[1] = mat;
このように配列でマテリアルを指定すれば良いと思ったが動作せず。
以下のように配列ごと入れ替えると動作した。
Material[] tmp = gameObject.GetComponent<Renderer>().materials; tmp[1] = mat; gameObject.GetComponent<Renderer>().materials = tmp;
追記
マテリアルの変更を応用すると、脱出ゲームのギミックなどが作成できます。
詳しくは以下の記事に記載しています。