博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
U3D事件系统总结
阅读量:4960 次
发布时间:2019-06-12

本文共 884 字,大约阅读时间需要 2 分钟。

事件系统有三个要素:发送者,接收者, 转发者。

发送者有两种,一是相机,二是画布。发送者是事件的管理者,发起者,它们使用射线发射器来检测点击事件:

  • 相机的physics Raycaster。
  • 画面的Canvas Raycaster。

发送者是首要因素,如果不给相机添加physics Raycaster组件,场景中的任何3D物体都不会有射线检测的计算,拣选事件永远不会触发。

画面默认都带有Canvas Raycaster,因此不需要自己添加。只要UI自己处理好接收事件就可以接收消息了。

转发者是指触发器EventTriger,是接收到事件后对事件的转发。如Button的属性面板上的On Click()就是一个触发器。

 

接收者和触发者可以是UI或3D物体。只要实现了 IPointerDownHandler, IPointerUpHandler, IPointerClickHandler

 等接口就能接收到相关消息。以Button为例,实现UI的事件编写有三种方式:

  • 给Button添加一个脚本,实现IPointerClickHandler的OnPointerClick()接口,就能接收到按钮的点击事件。
  • 给按钮添加一个脚本,在脚本中GetComponent<Button>.onClick.AddListener(MyOnClick),点击按钮就会调用MyOnClick()的自定义方法。
  • 给按钮添加一个脚本bltListener,里面定义一个函数void OnMyClick(),同时在On Click()区域添加一个触发项:object选Button本身,后面选bltListener.OnMyClick。这是按钮自己向自己发送事件。当点击按钮时,按钮将遍历所有添加的触发项,并调用触发项指定的脚本。

这三种方式本质上还是第一种方式。后面二种是UGUI实现的包装,便于使用和UI操作。

对于3D物体,只有使用第一种方式了,是最原始的通用方式。

转载于:https://www.cnblogs.com/timeObjserver/p/5969319.html

你可能感兴趣的文章
java语法之final
查看>>
python 多进程和多线程的区别
查看>>
sigar
查看>>
iOS7自定义statusbar和navigationbar的若干问题
查看>>
[Locked] Wiggle Sort
查看>>
deque
查看>>
Setting up a Passive FTP Server in Windows Azure VM(ReplyCode: 227, Entering Passive Mode )
查看>>
Python模块调用
查看>>
委托的调用
查看>>
c#中从string数组转换到int数组
查看>>
数据模型(LP32 ILP32 LP64 LLP64 ILP64 )
查看>>
java小技巧
查看>>
POJ 3204 Ikki's Story I - Road Reconstruction
查看>>
【BZOJ】2959: 长跑(lct+缩点)(暂时弃坑)
查看>>
iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
查看>>
toad for oracle中文显示乱码
查看>>
SQL中Group By的使用
查看>>
错误org/aopalliance/intercept/MethodInterceptor解决方法
查看>>
Pylint在项目中的使用
查看>>
使用nginx做反向代理和负载均衡效果图
查看>>