using UnityEngine; using UnityEngine.EventSystems; //以下是按下事件,想要別的事件EventTriggerType枚舉點出來自己就能看到了 public class EventTriggerDelegateExample : MonoBehaviour { void Start() { EventTrigger trigger = GetComponent<EventTrigger>(); EventTrigger.Entry entry = new EventTrigger.Entry(); entry.eventID = EventTriggerType.PointerDown;
/*這里的(PinterEventData)data參數不固定,即,可以使其他別的類型的參數,
比如說gameobject啊之類的(不要用數組傳,傳不過去的,會提示越界)*/ entry.callback.AddListener((data) => { OnPointerDownDelegate((PointerEventData)data); }); trigger.triggers.Add(entry); } public void OnPointerDownDelegate(PointerEventData data) { Debug.Log("OnPointerDownDelegate called."); } }
題外話:雖然這個方法好,但是如果按鈕結合scrollview組件的話你會神奇的發現你拖不動按鈕了。。。所以這時候我們只能用回onClick.AddListener()了,參數傳遞的話就用上面那樣的方法,比如:
private void Start() { int a = 1; int b = 2; btn.OnClick.AddListener(()=>{ Method(a, b); }); } private void Method(int a, int b) { Debug.Log(a + b); }