前提
Unityでゲームを作成しているのですが、「グレースケール」演出の実装について質問があります。
実現したいこと
複数Imageなどで構成されたUIをまとめてグレースケール化したい。(※色を黒くしたい、という意味合いで捉えていただければ)
できれば半透明の黒Imageを被せる形で対応したい。
※それぞれのImageのColorをいじらなくて済むため
試したこと
当たり前ですが単にImageを被せるとグレースケール用のImageが全面に表示されてグレースケールしなくて良いところまで表示されてしまいます。(下記画像)
↓
こちらImgageのあるところのみマスクしてほしいのが願望です。
該当のソースコード
結果は異なると思いますが違うやり方としてソース側でColorを変える方法がありますが、こちらはグレースケール表示中に違う処理でColorが変わると意味をなさなくなり上から被せる感じにしたいです。
また、グレースケールを解除したいときはもともとのColorを保持しておかないといけないと思っております。
C#
1 var graphics = transform.GetComponentsInChildren<Graphic>(true); 2 foreach(var g in graphics) 3 { 4 g.color = Color.gray; 5 }
質問
本件の用に複数Imageマスクによるグレースケール(Imageを被せる方法)というのは難しいでしょうか?
また、おすすめのグレースケールの方法があればお聞きしたいです。