エンジニア戦記

Unity スクリプトからImageとTextの色を変更する

f:id:nuakam:20180124180536j:plain


特に難しい処理をするわけではない。

スクリプトからImageの色変更


そもそもやりたかった機能はこれ


この



この部分。


Pinterstのお知らせメニューの奴。

非アクティブのほうをタップすると、タブが切り替わる

タブメニューUIとでも呼ぶのだろうか、いろんなアプリで見かける。


そのくせAsset検索しても、GitHub漁ってもない。
(検索の仕方が悪い?)

ネイティブ専用のパーツなのかもしれない。
仕方ないから自作した。


Canvas2つ作ってー
Onclickでアクティブ非アクティブ切り替え登録してー

タブの部分は

UI(Canvas)
|-Image
|-Tab1(Canvas+Toggle)
|   |-Image
|   |-Text
|-TAb2(Canvas+Toggle)
   |-Image
   |-Text

こんな

で、Tab1とTab2の色をスクリプトで切り替えようと。

色の変更

やっと本題。


ソースをバーン

              [SerializeField]
        private GameObject BgColor1, BgColor2, LabelColor1, LabelColor2;


        //色の指定はfloat型のRGBA値に255.0fで除算したもの
        private Color Black = new Color(0.0f / 255.0f, 0.0f / 255.0f, 0.0f / 255.0f, 255.0f / 255.0f);
        private Color White = new Color(255.0f / 255.0f, 255.0f / 255.0f, 255.0f / 255.0f, 255.0f / 255.0f);

        private void Start()
        {
            ColorChange(true);
        }

        public void LeftOnTap()
        {
            ColorChange(true);
        }

        public void RightOnTap()
        {
            ColorChange(false);
        }

        private void ColorChange(bool Left)
        {
            if (Left)
            {
                BgColor1.GetComponent<Image>().color = White;
                LabelColor1.GetComponent<Text>().color = Black;
                BgColor2.GetComponent<Image>().color = Black;
                LabelColor2.GetComponent<Text>().color = Black;
            }
            else
            {
                BgColor1.GetComponent<Image>().color = Black;
                LabelColor1.GetComponent<Text>().color = Black;
                BgColor.Get2Component<Image>().color = White;
                LabelColor2.GetComponent<Text>().color = Black;
            }
        }

単にオブジェクトの.colorで色指定するだけ!

色のpublic変数が存在してたんですねぇ


色の指定は

Color(0.0f / 255.0f, 0.0f / 255.0f, 0.0f / 255.0f, 255.0f / 255.0f);

のようにRGBA指定(float型)。を255.0fで除算する。
ちょっとめんどい。\そだねー/

あとはボタンに関連付けるなり、SerializeFieldに値入れるなり、ちゃんと色定義するなりで動く!

プライバシーポリシー 免責事項