前提・実現したいこと
以下の図のように
「グループA、Bに表示された画像からそれぞれ1つのみ選択し決定ボタンを押す」
という動作を求めるUIを作成しています。なお、表示される画像は毎回異なります。
グループA [画像1][画像3][画像4]
グループB [画像2][画像5]
[決定]
これに対し、トグルを利用し次のようなプレハブを作成し利用したいと考えています。
▼Toggle トグルグループ設定でグループ内で1つしか選べないようにする予定
_▼Background 画像変更スクリプト「ImageSet」をアタッチ
__▼Checkmark
「ImageSet」
Start(){
Image img = GetComponent<Image>();
}
SetImage(){
img.sprite = 画像
}
発生している問題
このプレハブを
GameObject ins = Instantiate(”Toggle”) as GameObject;
として生成し、Canvasの子要素に設定するなどして画面に表示させることには成功しましたが、画像の変更の仕方がよく分かりません。
###試したこと
insがプレハブ化したToggleをインスタンス化したものならば、画像はその子要素なので子要素を取得すれば操作できると考えましたが、
ins.transform.Find("Background").gameObject.GetComponent<ImageSet>().SetImage();
このように記述すると次のようなエラーが表示され、これによるとimg.spriteがnullであると言っているようです。
NullReferenceException: Object reference not set to an instance of an object ImageSet.SetImage () (at Assets/Script/ImageSet.cs:36)
Start()が起動していないのではないかと疑い、試しにGetCompornentを画像変更の直前で行ったところ、
エラーは発生しませんでしたが画像は変更されないままでした。
###質問
以上より、ご教示いただきたい点は次の2点です
1.そもそもToggleの背景画像を動的に変えるというアイデアは実現可能なのか?
→可能ならばどのようにスクリプトを修正すればよいですか?
2.ToggleではなくImageを配置しクリックイベントでオンオフを管理する方法にしてしまったほうが手っ取り早いのか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。