突然押したように見えなくなったボタン
UnityのShader Graphを使うと、視覚的にノードを繋げていくだけでこんな演出が簡単に作れる。
この例では、白黒 ないしは 白&透明で表現したマスク値から、好きなパターンで画像にハイライトを入れることができるようにした。
しかし、Unityのボタンの画像にマテリアルを適用すると状況によっては困ったことになる。
Color tint
モードで、画像の色を微妙に変化させて無効状態や押し込んだ状態を表現しようとすると、
何も考えずにやるとボタンの色が変わらない現象に陥る。
TL;DR
UnityのButtonのColor Tintは Vertex Color を変化させることで実装されている。"Tint"という名前なのにそれを使っていないのである!そのため、次のように Vertex Color
ノードを使って現在のVertex Colorを取り出し、出力する各チャネルに乗算適用する必要がある。
このVertex Color
ノード(に加えて、Vertex Colorそのもの)の存在は、UIボタンの画像として指定する Image
コンポーネントに現れないため、かなりハマり所だった。