よりみちアプリ開発

Unityゲームアプリ開発、猫、映画、ゲーム、日々🍀

【Unity】複数のボタンからクリックした一つを選択状態にする方法

こんにちは! やっぱり三日坊主が発動して、久しぶりのブログになってしまいました(^^;
開発自体は、じわじわと進んでおります。

今日はタイトルの通り、複数のボタンを並べて、その中からクリックした一つを選択状態にする方法です。 調べたら意外と出てこなかったので、作ってみました。

↓のように、クリックされた一つだけ色が変わって、他のボタンは元の色に戻るという感じになります。

f:id:emi_noa:20200521164206g:plain

Unity上はこのようになっていて、 animal_1,animal_2,animal_3が3匹のにゃんこのボタンです。

f:id:emi_noa:20200521170134p:plain

コードはこんな感じで、各ボタンにスクリプトをつけて、OnClick()で以下のメソッドを呼び出しています。

 public static string AnimalName;

    public override void ButtonClick()
    {

        //すべてのボタンを見つけて、リストに入れる
        GameObject animal_1 = GameObject.Find("animal_1");
        GameObject animal_2 = GameObject.Find("animal_2");
        GameObject animal_3 = GameObject.Find("animal_3");

        List<GameObject> animalList = new List<GameObject>()
        {
            animal_1,animal_2,animal_3
        };

        //まず、すべてのボタンの色を白(元の色)にする
        foreach(GameObject gameObject in animalList)
        {
            gameObject.GetComponent<Image>().color = Color.white;
        }

        //クリックされたボタンの色だけを、グレイにする
        this.gameObject.GetComponent<Image>().color = Color.gray;

        //クリックしたオブジェクトの名前を、static変数に渡す       
        string AnimalName = this.gameObject.name;
    }

今回は、クリックしたオブジェクト名の数字の部分を切り取ってIDとして使用したかったので、 nameを取得しましたが、クリックされたgameObject自体をstatic変数に入れて、 登録ボタンなどで使うこともできるかと思います。

自己流なのでもっと良いやり方があるかも。
わかりづらい点がありましたら聞いてくだされば幸いです^^

ではでは今回はこの辺で。
皆様体調にお気をつけてお過ごしくださいませ😊