Unity 事件系统使用

Wesley13
• 阅读 398

事件系统

上篇简单介绍了一下事件系统,这篇介绍一下怎么使用。

UI使用事件系统

最常见的使用莫过于我们直接使用的UGUI,当我们创建任意一个UI元素的时候,会自动创建一个Canvas,一个EventSystem。这就启用了unity的事件系统。

EventSystem上面挂载有前面我们说的EventSystem组件负责管理事件系统各模块。StandaloneInputModule组件负责处理输入模块。

Canvas上的GraphicRaycaster,前面我们也说过是用于决定事件接收目标的。例如鼠标点击在哪个UI元素上。

Unity 事件系统使用

三个选项:

  1. 是否忽略背着的元素(勾选之后按钮,绕Y轴转180度之后,不能接收点击事件)

  2. 阻止射线检测的物体类型(Canvas的Render Mode选择Screen Space-Camera,UI之前有个Cube,然后该选项选择3D话,UI不能接收点击事件。)

  3. 阻止射线检测的物体层(基于选项2。UI之前有两个Cube1,Cube2,一个层cube1,一个层cube2,然后该选项选择cube1的话,Cube1会阻挡UI接收点击事件,Cube2不会。)

非UI使用事件系统

怎样在非UI模块使用事件系统。

需要用到前面提到的PhysicsRaycaster,加到摄像机上(别忘了保证场景里头一定要有EventSystem)。

接下来有两种方式:

  1. 在MonoBehaviour中实现上文提到的支持的接口例如:IPointerEnterHandler,IPointerExitHandler等。

Unity 事件系统使用

  1. 第二种就是利用unity内置的EventTrigger组件

Unity 事件系统使用

可以添加多种事件,并绑定目标物体的脚本上目标方法。

同样利用EventTrigger组件可以通过代码动态绑定事件

Unity 事件系统使用

通过EventSystem.current.IsPointerOverGameObject()可判断鼠标是否悬浮在可接收事件消息的物体上。

欢迎扫码关注公众号,获得持续更新

Unity 事件系统使用

顺手求个赞,分享一下呗~

本文分享自微信公众号 - 游戏人的开发分享(No_2SeeYou)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
技术小男生 技术小男生
4个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
1年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Wesley13 Wesley13
1年前
Unity3D中UGUI不使用DOTween制作渐隐渐现效果
在做UI后期设计时,我们可能要对UI做一些特效,这篇文章我们来学习下如何在Unity3d中对实现渐隐渐现的效果,首先我们看下UnityNewUI即UGUI中渐隐渐现的做法.观察我们会发现Unity4.6UI中每个能够显示控件都会有一个CanvasRender对象,CanvasRender有什么作用呢,我们看下官方的解释:TheCanvas
Easter79 Easter79
1年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
1年前
Locust 安装
Locust介绍  Locust是一个易于使用、分布式的负载测试工具,它可以对网站或其他系统进行负载测试,并计算出一个系统能够承受多少的并发用户。Locust完全基于事件,因此可以在一台机器上支持数千名并发用户,与其他基于事件的应用相比,它不使用回调。与jmeter、loadrunner相比,Locust不需要笨重的UI或臃肿的xml
Wesley13 Wesley13
1年前
Unity事件系统
\1.前言Unity中事件/委托有着广泛的应用,本文通过封装一个简易的事件的系统,来统一管理消息的传递。此功能在简易应用或者事件较少的体现不出太好的作用,但是对于事件应用较多时,可以减少脚本之间的耦合。通过此事件系统架起不同脚本之间的桥梁,对于大量应用事件场景中具有良好的效果。\2.事件系统\2.1事件管理类管理事件的
Wesley13 Wesley13
1年前
Unity中EventTrigger使用
在Unity中,点击场景中的模型我们往往需要检测是否点击在了UI上,这时我们需要进行一系列的判断,往往效果还不好,因此我在场景中模型的点击也使用了EventTrigger,EventTrigger我们在UI上的使用比较常见,但是它也可以用于场景点击,并且能屏蔽点击到UI又响应了模型的点击事件,以下是点击事件的组件脚本usi
NVIDIA安培架构下MIG技术分析
关键词:NVIDIA、MIG、安培一什么是MIG2020年5月,NVIDIA发布了最新的GPU架构:安培,以及基于安培架构的最新的GPU:A100。安培提供了许多新的特性,MIG是其中一项非常重要的新特性。MIG的全名是MultiInstanceGPU。NVIDIA安培架构中的MIG模式可以在A100GPU上并行运行七个作业。多实
helloworld_34035044 helloworld_34035044
7个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为