两种写法
写法一:
- 写法一:
- 写法二:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class Trigger : MonoBehaviour
{
EventTrigger eventTrigger;
// Start is called before the first frame update
void Start()
{
eventTrigger = GetComponent();
AddPointerEnterEvent();
AddPointerExitEvent();
AddPointerClickEvent();
}
void AddPointerEnterEvent()
{
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerEnter;
entry.callback = new EventTrigger.TriggerEvent();
UnityEngine.Events.UnityAction callback = new UnityEngine.Events.UnityAction(PointerEnter);
entry.callback.AddListener(callback);
eventTrigger.triggers.Add(entry);
Debug.Log("AddPointerEnterEvent");
}
void AddPointerExitEvent()
{
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerExit;
entry.callback = new EventTrigger.TriggerEvent();
UnityEngine.Events.UnityAction callback = new UnityEngine.Events.UnityAction(PointerExit);
entry.callback.AddListener(callback);
eventTrigger.triggers.Add(entry);
Debug.Log("AddPointerExitEvent");
}
void AddPointerClickEvent()
{
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = EventTriggerType.PointerClick;
entry.callback = new EventTrigger.TriggerEvent();
UnityEngine.Events.UnityAction callback = new UnityEngine.Events.UnityAction(PointerClick);
entry.callback.AddListener(callback);
eventTrigger.triggers.Add(entry);
Debug.Log("AddPointerClickEvent");
}
void PointerEnter(BaseEventData baseEventData)
{
Debug.Log("enter");
}
void PointerExit(BaseEventData baseEventData)
{
Debug.Log("exit");
}
void PointerClick(BaseEventData baseEventData)
{
Debug.Log("click");
}
}
原文地址:https://www.cnblogs.com/Peng18233754457/p/11813837.html 大佬的博客主页太炫酷了
写法二:后来的使用过程中我做了一点点改动 像这样:
///
///
///
/// 需要添加事件的EventTrigger
/// 事件类型
/// 回调函数
void AddPointerEvent(EventTrigger eventTrigger, EventTriggerType eventTriggerType, UnityEngine.Events.UnityAction callback)
{
EventTrigger.Entry entry = new EventTrigger.Entry();
entry.eventID = eventTriggerType;
entry.callback = new EventTrigger.TriggerEvent();
entry.callback.AddListener(callback);
eventTrigger.triggers.Add(entry);
Debug.Log("AddPointerEnterEvent");
}
//这样注册
AddPointerEvent(eventTrigger, EventTriggerType.PointerEnter, PointerEnter);
AddPointerEvent(eventTrigger, EventTriggerType.PointerExit, PointerExit);
AddPointerEvent(eventTrigger, EventTriggerType.PointerClick, PointerClick);
相关组合操作:Unity动态获取和添加组件