目录
一、前言
本篇文章讲解的是,如何用代码实现添加EventTrigger的全过程。
手动添加版,链接如下:
unity | EventTrigger(实现鼠标/按钮按下、抬起等时执行的方法)_unity eventtrigger-CSDN博客
二、接口
接口有一个特点,就是如果你希望给他传递方法,就必须和他一模一样的格式。
那么我们先看一下EventTrigger中大部分接口的格式,以IPointerDownHandler这个接口为例(其他的也长得差不多,如果有特别不一样的可以在评论区说一下,我会补充的):
public interface IPointerDownHandler : IEventSystemHandler
{
//空的 //方法 //传递了一个参数
void OnPointerDown(PointerEventData eventData);
}
由上面观察可知,它接收的格式是:方法(一个参数),这个参数是一个鼠标的事件。
我们现在要模仿这个格式来写方法。
//方法 //鼠标事件参数
private void DrawLine(BaseEventData baseEventData)
{
//输出信息
Debug.Log("111111");
}
如果注意观察,会发现,上面的参数是:PointerEventData,而下面的参数是BaseEventData
其实两个应该是一样的,但这里不一样。这两个参数都是鼠标的事件,只不过写法不一样,关于这个知识点,回头再补充,总之,目前我们假装一样。这样我们的方法就满足他们的需求了。
三、把方法加入到EventTrigger中
下一步,就是要把写好的方法交给接口,这里就是我们把应该手动做的事情,用代码完成。
这个组件叫EventTrigger,添加里面的内容就是要进入enter。
EventTrigger.Entry myclick = new EventTrigger.Entry();
//在里面添加 名称 初始化一下
(2)点击了add New event type后,它会让你选,你需要哪种接口,这些接口在里面是eventID,我这里选了个PointerDown。
EventTrigger.Entry myclick = new EventTrigger.Entry();
myclick.eventID = EventTriggerType.PointerDown;
//EventTriggerType这个就是个装很多选项的篮子,在里面把PointerDown挑了出来
(3)把我们写好的方法交给这个接口。
EventTrigger.Entry myclick = new EventTrigger.Entry();
myclick.eventID = EventTriggerType.PointerDown;
myclick.callback.AddListener(DrawLine);
这样就完成了完整的交接过程。
四、纯净版脚本
我单另建了一个图片,把脚本挂上去,当我点击时,执行我们写好的方法。
void Start()
{
EventTrigger.Entry myclick = new EventTrigger.Entry();
myclick.eventID = EventTriggerType.PointerDown;
myclick.callback.AddListener(DrawLine);
//让干这件事的按钮上加EventTrigger组件
gameObject.AddComponent<EventTrigger>();
//把之前写好的那些步骤都给它
gameObject.GetComponent<EventTrigger>().triggers.Add(myclick);
}
private void DrawLine(BaseEventData baseEventData)
{
Debug.Log("11111");
}