在 Unity 中 UI 事件有两种方式,一种使用数据接口的方式,另一种使用监听组件的方式。
# 使用数据接口
通过继承数据额接口实现接口方法我们可以对 Ui 事件进行处理。
public class APanel : MonoBehaviour, IPointerClickHandler | |
{ | |
public void OnPointerClick(PointerEventData eventData) | |
{ | |
print("Ui被点击了"); | |
} | |
} |
Unity 提供了各种各样的数据接口给我们使用,这里不在一一赘述。
需要注意的一点是,使用 Drag 类的接口时,我们必须使用 Drag 接口,其他的 BeginDrag、EndDrag 等接口才会响应。
# 使用监听组件
我们最常用的监听组件是 Button组件
,我们可以给任意一个 Ui 添加一个 Button 组件来让 Ui 具有 Button 的效果。
在处理复杂的监听事件时,我们可以使用 Event trigger
组件。
Event trigger
监听绑定和 Button 基本一致,我们可以在面板上通过拖拽来设定我们的响应事件和要触发的行为。
# 使用代码绑定
使用那来绑定 Event Trigger 的方式和 Button 略有不同。
private EventTrigger _eventTrigger; | |
private void Awake() | |
{ | |
_eventTrigger = GetComponent<EventTrigger>(); | |
var entry=new EventTrigger.Entry(){eventID = EventTriggerType.PointerClick}; | |
entry.callback.AddListener((a) => | |
{ | |
print("被点击了@!"); | |
}); | |
_eventTrigger.triggers.Add(entry); | |
} |
我们需要使用 Entry () 的一个类似工厂方法的方式来创建一个回调实体,并指定事件类型。