1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

UnityAdvent Calendar 2023

Day 24

[Unity]Material '〜' with Shader '〜' doesn't have a color property '_Color'

Posted at

概要

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です:sunny:

スクリーンショット 2023-12-17 16.27.47.png

ShaderGraphではプロパティ名に指定した名前の先頭にアンダーバーを付けた形式でReferenceを自動生成してくれます。この手順をすることでデフォルトと違うReferenceになりますのでその点は注意が必要になります。

Material.colorにこだわらなければ
material.SetColor("_BaseColor", _color);
みたいにアクセスするのでも大丈夫です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?