実現したいこと
UnityでEventSystemを用いて他オブジェクトの関数を実行する。
独自ボタンを作り、ボタンを押したときに実行されるようにしたい。
試したこと
実行されてないようだったので試しにDebug.Logを入れてみるも何も表示されず。
OnPointerClickにあるDebugはしっかり表示された。
エラーが出ないため、自身では原因がわからず、困り果てたため質問します。
該当のソースコード
呼び出す方(ボタン側)のコード
C#
1using DG.Tweening; 2using UnityEngine; 3using UnityEngine.EventSystems; 4 5public class ButtonEndTurn : MonoBehaviour, 6 IPointerClickHandler, 7 IPointerDownHandler, 8 IPointerUpHandler 9{ 10 public System.Action onClickCallback; 11 12 public GameObject objButton; 13 public GameObject objSelectedCity; 14 public GameObject objTarget; 15 MakeCity city; 16 17 [SerializeField] private CanvasGroup _canvasGroup; 18 19 public void OnPointerClick(PointerEventData eventData) 20 { 21 onClickCallback?.Invoke(); 22 23 city = objSelectedCity.GetComponent<MakeCity>(); 24 ExecuteEvents.Execute<IEventCallerEndTurn>( 25 target: objTarget, 26 eventData: null, 27 functor: Method 28 ); 29 30 //Debug.Log(city.selectedList[0].pos[0]); 31 } 32 33 private void Method(IEventCallerEndTurn reciever, BaseEventData eventData){ 34 //reciever.ScoreTest(city.selectedList); 35 Debug.Log("@@@@@@@@@"); 36 } 37 38 public void OnPointerDown(PointerEventData eventData) 39 { 40 transform.DOScale(0.95f, 0.24f).SetEase(Ease.OutCubic); 41 _canvasGroup.DOFade(0.8f, 0.24f).SetEase(Ease.OutCubic); 42 } 43 44 public void OnPointerUp(PointerEventData eventData) 45 { 46 transform.DOScale(1f, 0.24f).SetEase(Ease.OutCubic); 47 _canvasGroup.DOFade(1f, 0.24f).SetEase(Ease.OutCubic); 48 } 49}
呼び出される方のコード
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.EventSystems; 5 6using TMPro; 7 8public interface IEventCallerEndTurn : IEventSystemHandler 9{ 10 void ScoreTest(List<MapInfo> city); 11} 12 13public class ScoreCheckerTest : MonoBehaviour, IEventCallerEndTurn 14{ 15 public TextMeshProUGUI score; 16 17 18 19 // Start is called before the first frame update 20 void Start() 21 { 22 23 } 24 25 // Update is called once per frame 26 void Update() 27 { 28 29 } 30 31 public void ScoreTest(List<MapInfo> loaded){ 32 int countTest = 0; 33 foreach (MapInfo m in loaded){ 34 countTest++; 35 } 36 score.text = $"{countTest}"; 37 Debug.Log("*********"); 38 } 39}
補足情報
EDITER VERSION 2021.3.6f1

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/05 05:18 編集
2022/08/05 05:46