実現したいこと
Instantiateで生成したButtonオブジェクトに、Button自身を引数にしたイベントを付けたい。
作りたい動作としては、KBAddButton()をアタッチした「追加ボタン」をクリックすると新しくボタンが生成され、その生成されたボタンをクリックするとボタン自身の画像が切り替わる、という動きを実装したいです。
該当のソースコード
C#
1public RectTransform kbPrefab; 2public Sprite Asprite; 3public Sprite Bsprite; 4 5public void KBAddButton() 6 { 7 var item = Instantiate(kbPrefab); 8 9 Button button1 = item.GetComponent<Button>(); 10 Button button = button1; 11 button.onClick.AddListener(() => 12 { 13 SelectOnKB(button); 14 }); 15 16 } 17 18 19public void SelectOnKB(Button button) 20 { 21 btnImage = button.GetComponent<Image>(); 22 23 //AspriteだったらBspriteに切り替える 24 if (btnImage.sprite == Asprite) 25 { 26 btnImage.sprite = Bsprite; 27 } 28 29 else //BspriteだったらAspriteに切り替える 30 { 31 btnImage.sprite = Asprite; 32 } 33 }
###エラー
ArgumentException: method arguments are incompatible
System.Delegate.CreateDelegate
ArgumentException:メソッド引数に互換性がありません
試したこと
シーン上に元々配置していたButtonではSelectOnKB(Button button)
が動くことを確認しました。
インスタンス生成したButtonの方は、引数を変数に一時保存すると個別に引数が付けられるという情報を見て、Button button = button1;を追加してみましたが変わりませんでした。
「メソッド引数に互換性がない」というエラーの意味が分からず、ここでずっと詰まっています。
どなたかご教授いただけないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。