引き続きUnityを研究中。というよりほぼシェーダーがメインです。
残念なことに、ちょっと行き詰まった。試行錯誤しながら、シェーダーだけでボタンを組めないかとやってみましたがダメのようでした。どうやらGUIだと、オブジェクトごとにシェーダーのPropertyを設定できないからです。
3DだとMaterialPropertyBlockという方法が存在するが、2D系のイメージではそれが使えない。マウスオーバーなどがたぶんマウス位置を渡せばなんとかなるかもしれないが、クリックイベントは渡せないのです。
いや、渡せるが、同じマテリアルを使ってるイメージは全部ひっかかるからです。つまりクリックすると、全てもイメージもクリック効果になるからです。
だから、無理でした。
PrefabはProperty個別ですし、シェーダーのPropertyも個別だろうと勘違いした僕が甘かった。
解決策としてクリック用の別のマテリアルを作ればよいが(スクリプトでマテリアルを差し替える)、他のPropertyも個別に設定できない以上、使い勝手が悪いので諦めました。もしMaterialPropertyBlockが使えたら、各マウスイベントの色、ボーダーの有無、厚さ、カラー、全部シェーダーでできるんだよね…
結局2Dは大人しくピクセルの加工だけが使い道かもしれない。まあ、Unityのシェーダーはまだ完全にマスターしてないけど…
とはいえ、仕事のアプリではそこまでシェーダーに頼るものではないので、特に問題はない。少なくともアウトライン付き丸ボタン(の背景)は使えます、それだけでもう十分です。
そもそももうひとりは完全にUnity初心者なので、自分が上級者向けのシェーダーばかり遊ぶと、たぶんその方もやってられんかもしれない。
この年末年始、本当にUnityの研究だけで終わりそうですね…