Kilimanjaro Warehouse

WEBとかゲーム開発のことについて書きます。

ShaderLab: Properties内でテクスチャを宣言する際には波括弧が必要

この前シェーダーを書いていたところ、

Shader error in 'TestShader': Parse error: syntax error, unexpected TVAL_ID at line 7

というエラーが出ました。

原因を調べてみたところ、
Properties内でテクスチャのプロパティを宣言する際に、
末尾に波括弧{}をつけ忘れていたのが原因のようでした。


公式ドキュメントにもある通り、
2D, Cube, 3Dなどでテクスチャを使用する際は、
末尾に{}を追加する必要があるようです。

name ("display name", 2D) = "defaulttexture" {}
name ("display name", Cube) = "defaulttexture" {}
name ("display name", 3D) = "defaulttexture" {}

docs.unity3d.com

Unityのバージョンが5になるまでは、
波括弧の中にオプションを書くことができたようですが、
現在は削除されたようです。

つまり現在では波括弧の中にオプションが書かれることはなく、
意味のない記述ではあるものの、
書かない場合エラーが発生してしまうという状況になっています。

(しかし、Propertiesの中身がテクスチャ(2D, Cube, 3D)の宣言1行のみの場合、
エラーが発生せず問題なくコンパイルが通るため、謎です)

この件について詳しい情報をお持ちの方がいたら、
ブログのコメント欄かTwitterでリプライを頂きたいです...