【Unity】複数のボタンからクリックした一つを選択状態にする方法
こんにちは!
やっぱり三日坊主が発動して、久しぶりのブログになってしまいました(^^;
開発自体は、じわじわと進んでおります。
今日はタイトルの通り、複数のボタンを並べて、その中からクリックした一つを選択状態にする方法です。 調べたら意外と出てこなかったので、作ってみました。
↓のように、クリックされた一つだけ色が変わって、他のボタンは元の色に戻るという感じになります。
Unity上はこのようになっていて、 animal_1,animal_2,animal_3が3匹のにゃんこのボタンです。
コードはこんな感じで、各ボタンにスクリプトをつけて、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変数に入れて、 登録ボタンなどで使うこともできるかと思います。
自己流なのでもっと良いやり方があるかも。
わかりづらい点がありましたら聞いてくだされば幸いです^^
ではでは今回はこの辺で。
皆様体調にお気をつけてお過ごしくださいませ😊