Unity给UI元素物体添加操作响应事件

admin2年前unity基础API159

可以给自定义物体如图片等添加响应事件


引入命名空间

using UnityEngine.EventSystems;



类中继承接口

IPointerDownHandler


实现接口

    public void OnPointerDown(PointerEventData eventData)
    {
        自定义处理代码
    }



更多接口

IPointerDownHandler 接口,可响应鼠标在自身碰撞体范围内按下事件

需要实现 void OnPointerDown(PointerEventData eventData) 方法.



IPointerUpHandler 接口,可响应鼠标在自身碰撞体范围内松开事件

需要实现 void OnPointerUp(PointerEventData eventData) 方法.



IPointerClickHandler 接口,可响应鼠标在自身碰撞体范围内点击事件,什么叫点击呢,就是你在碰撞体范围内按下了,然后又在范围内松开了,这中间是可以移动的,哪怕你移出范围了,只要你松开的时候回来就算.

需要实现 void OnPointerClick(PointerEventData eventData) 方法.



IPointerEnterHandler 接口,可响应鼠标进入自身碰撞体范围事件

需要实现 void OnPointerEnter(PointerEventData eventData) 方法.



IPointerExitHandler 接口,可响应鼠标离开自身碰撞体范围事件

需要实现 void OnPointerExit(PointerEventData eventData) 方法.



IPointerMoveHandler 接口,可响应鼠标在自身碰撞体范围内移动事件

需要实现 void OnPointerMove(PointerEventData eventData) 方法.



IScrollHandler接口,可响应鼠标在自身碰撞体范围内滑动滚轮事件

需要实现 void OnScroll(PointerEventData eventData) 方法. 作者:白白_可乐 https://www.bilibili.com/read/cv18219864/ 出处:bilibili




接下来是拖拽相关的:

IDragHandler 接口,在事件系统的拖拽相关中,这是个比较关键的接口,虽然只

需要实现void OnDrag(PointerEventData eventData)方法

但是其他的几个接口在没有他的情况下是不完整(或者不工作的),这个方法响应的是拖拽事件,那么所谓拖拽事件,就是鼠标按住不放的情况下移动了,在移动的每一帧都会触发拖拽事件,你按着不动了就暂停触发,继续动继续触发,松开就停止触发.

IInitializePotentialDragHandler接口,检测当前脚本是否实现了前面那个IDragHandler接口,如果脚本有IDragHandler接口的话,在你按下鼠标之后触发本接口(触发时机是晚于IPointerDownHandler)

需要实现void OnInitializePotentialDrag(PointerEventData eventData)方法



IBeginDragHandler接口,当拖拽开始时触发,即按下鼠标开始移动的时候,按着不触发,动的那一帧触发,如果脚本没有实现IDragHandler接口的话不会触发.

需要实现void OnBeginDrag(PointerEventData eventData) 方法.



IEndDragHandler接口,当拖拽结束时触发,松开就是结束.

需要实现void OnEndDrag(PointerEventData eventData) 方法.



IDropHandler接口,既然有拖拽,那么就自然有放置,当你正在拖拽时,如果在实现该接口的物体的碰撞体范围内松开,就会触发该接口,触发时机早于IEndDragHandler接口.

需要实现void OnDrop(PointerEventData eventData) 方法. 作者:白白_可乐 https://www.bilibili.com/read/cv18219864/ 出处:bilibili


相关文章

unity 新的输入系统input system 使用

unity 新的输入系统input system 使用

1:首先在包管理器里安装 搜索"input system"2: 创建input acionts3:生成代码  勾选后点击右小角应用就可以自动生成相关代...

Unity移动操作物体

if (Input.touchCount == 1)         {  ...

Unity 插值运算

在unity3d中经常用线性插值函数Lerp()来在两者之间插值,两者之间可以是两个材质之间、两个向量之间、两个浮点数之间、两个颜色之间,其函数原型如下: 1.Material.Lerp&nbs...

blender导出模型和动画到Unity

blender导出模型和动画到Unity

1:首先我们确保导出的模型是FBX2:模型的Rig设置为泛型 avatar根据实际情况可以选择无或则从此模型创建3:设置动画控制器,把模型中的动画拖入就可以了...

通过刚体移动的方法

1:MovePosion移动的新的位置,传入的参数是最新的位置 一般是旧的位置加上变化的参数2:velocity这个方法是瞬间给物体一个恒定的速度,将物体提升至该速度 3:addF...

MoveTowards、Lerp、Slerp

1:MoveTowards MoveTowards(Vector2 current, Vector2 target, float maxDistanceDelta);current:当前位置...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。