概要
MaterialやShaderGraphをいじっていると以下のようなエラーが出ることがあります。
Material '〜' with Shader '〜' doesn't have a color property '_Color'
このエラーについて記事にまとめます。
本文
マテリアルの色設定にアクセスして色を変えたい時は以下のように記述できます。
_renderer.material.color = Color.blue;
これはマテリアルのシェーダー内にある_Colorにアクセスして色を変えているのですが、それをシンプルに記述できるようにしてくれているものです。
→公式リファレンス
シェーダーを自作した時、色設定のプロパティが「Color」以外の場合は_Colorは存在しないことになって上記のようなエラーが出てしまいます。
じゃあどうすればいいの?
色設定のプロパティを「Color」にすれば解決できます(厳密にはColorという名前をつければ内部的に_Colorとして扱ってくれます)
どうしても「Color」以外の名前にしたい時は、画面左上から色指定に使いたいプロパティを選択して、画面右上のNodeSettingsからReferenceに「_Color」を指定すればOKです
ShaderGraphではプロパティ名に指定した名前の先頭にアンダーバーを付けた形式でReferenceを自動生成してくれます。この手順をすることでデフォルトと違うReferenceになりますのでその点は注意が必要になります。
Material.colorにこだわらなければ
material.SetColor("_BaseColor", _color);
みたいにアクセスするのでも大丈夫です。