発生する現象
ボタンにOnClickAsObservable().Subscribe()
で処理を登録するとき、for文でまとめて登録しようとすると、うまくいかない現象が発生しています。
これに関して解決方法などありますでしょうか。
ソースコード
ボタンがあるUI用クラス
C#
1using UnityEngine; 2using UnityEngine.UI; 3using UniRx; 4using System; 5 6public class ButtonUI : MonoBehaviour 7{ 8 [SerializeField] private Button[] ChoiceButtons; 9 10 /// <summary> 11 /// 指定したインデックスのボタンをクリックしたときの動作を登録 12 /// </summary> 13 /// <param name="index"></param> 14 /// <param name="buttonAction"></param> 15 public void SetButtonClickAction(int index, Action buttonAction) 16 { 17 ChoiceButtons[index].OnClickAsObservable().Subscribe(_ => buttonAction()); 18 } 19}
ボタンを押したときの処理を登録するクラス
C#
1using UnityEngine; 2using System; 3 4public class ChoiceEvent 5{ 6 private ButtonUI ui; 7 8 /// <summary> 9 /// 選択肢イベントでボタンを押下したときの処理を追加 10 /// </summary> 11 private void SetButtonAction() 12 { 13 ui = GameObject.FindObjectOfType<ButtonUI>(); 14 // なぜかfor文を使用するとボタンのイベント登録がミスる 15 // 現状ボタンの数は4つなので、こう書けば一応動作はする模様 16 ui.SetButtonClickAction(0, () => 17 { 18 Debug.Log($"選択肢{0}を押下"); 19 }); 20 21 ui.SetButtonClickAction(1, () => 22 { 23 Debug.Log($"選択肢{1}を押下"); 24 }); 25 26 ui.SetButtonClickAction(2, () => 27 { 28 Debug.Log($"選択肢{2}を押下"); 29 }); 30 31 ui.SetButtonClickAction(3, () => 32 { 33 Debug.Log($"選択肢{3}を押下"); 34 }); 35 } 36} 37
Unity バージョン
- 2021.2.11
「うまくいかない」とはどうなるのでしょう?

回答2件
あなたの回答
tips
プレビュー