トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

【Unity】Buttonに2つ以上のTargetGraphic指定【uGUI】

問題

こういうボタンがあったとして、押したときやハイライトした時にラベルとアイコン両方の色を変えたい。

デフォルトだとTargetGraphicでは一つしか選べない

テキストの色を変えたいときは、TargetGraphicにTextを入れて、テキストの元の色を白にしておいて、Normalに黒、ハイライトに色を指定する

元の色を白にするのも結構めんどくさいがまあそれはいいとして、アイコンもテキストも同じような挙動にしたい。

Buttonスクリプト置き換え

検索したらButtonの拡張版を作っている方がいた

zenn.dev

使えた!

既存のButtonコンポーネントは消して新しいもの(元の記事とは名前を変えてButton_MultiTargetにした)を付ける。一つは従来通りButtonのTargetGraphicセットして、2つ目以降は一緒に付くTransition~~にセットする。

とりあえずの目的は果たせそうだが、長期的に運用していくにあたってこれでよいだろうか・・・

あと既にあるものを置き換えていくのがめんどくさいな~置き換えるのはいいけど置き換えた後に、スクリプトからのボタンの参照を設定しなおさないといけない

あと背景はアイコンとテキストとは別の色でハイライトしたいなどの状況が出てきたときはどうしたらいいんだろう~。自分で拡張を書けばいけるのかもしれないが書けない;;

UnityAsset

そんな悩みも解決できるアセットがあった!10ドル~

assetstore.unity.com

やや古いしレビューがないからちゃんと動くか不安

この記事の下のほうに書いてあるのも上と同じようなものだった。むしろTextMeshProを参照できなかったので最初の記事のほうがよい。

forum.unity.com

 

他のプロジェクトってどうしてるんだろう。。

どこかで基本はデフォルトのButtonなどのコンポーネントは使わないって聞いたことあるから、もろもろのButton拡張の中にこの機能の入れてるのかな?