您当前的位置:首页 > 精选问答

1.4 Unity3D中的eventSystem

时间:2024-08-22 21:03:36

一、1.4 Unity3D中的eventSystem

当创建UI时,unity会自动创建eventSystem,可以看到该对象下有三个组件:EventSystem、StandaloneInputModule、TouchInputModule,后面两个组件都继承自BaseInputModule。

EventSystem组件主要负责处理输入、射线投射以及发送事件。一个场景中只能有一个EventSystem组件,并且需要BaseInputModule类型组件的协助才能工作。EventSystem在一开始的时候会把自己所属对象下的BaseInputModule类型组件加到一个内部列表,并且在每个Update周期通过接口UpdateModules接口调用这些基本输入模块的UpdateModule接口,然后BaseInputModule会在UpdateModule接口中将自己的状态修改成'Updated',之后BaseInputModule的Process接口才会被调用。

BaseInputModule是一个基类模块,负责发送输入事件(点击、拖拽、选中等)到具体对象。EventSystem下的所有输入模块都必须继承自BaseInputModule组件。StandaloneInputModule和TouchInputModule组件是系统提供的标准输入模块和触摸输入模块,我们可以通过继承BaseInputModule实现自己的输入模块。

除了以上两个组件,还有一个很重要的组件通过EventSystem对象我们看不到,它是BaseRaycaster组件。BaseRaycaster也是一个基类,前面说的输入模块要检测到鼠标事件必须有射线投射组件才能确定目标对象。系统实现的射线投射类组件有PhysicsRaycaster, Physics2DRaycaster, GraphicRaycaster。这个模块也是可以自己继承BaseRaycaster实现个性化定制。

总的来说,EventSystem 负责管理,BaseInputModule 负责输入,BaseRaycaster 负责确定目标对象,目标对象负责接收事件并处理,然后一个完整的事件系统就有了。

我出现过的错误:

1:在创建UI时,把eventSystem删除了,导致在使用sprite swap功能时,点击button无反应,这时要么自己创建一个点击事件,要么在路径hierarchy-create-UI-eventsystem添加一个eventsystem。

二、unity3d 制作开关灯效果

用脚本控制呀。

添加一个公共变量指向一个发光体,通过脚本的控制鼠标点击的后发光体是否激活发光

设置灯的active就行了

三、3d force touch怎么用

对于 3D Touch 功能而言,当然自家的应用肯定都是率先支持这个功能的。只要用力按下屏幕上应用图标,就可以看到额外的功能选项,就好比在电脑上右键的选项功能。

值得注意的是,在刚拿到 iPhone6S 手机时,对于平时习惯了轻点屏幕,所以对于压力感应可能需要一点时间去适应它。如果在按了屏幕上的图标以后,没有弹出功能选项的话,说明按压的力度不够。

当然对于 iPhone6S 上的 3D Touch 在系统中是有设置选项的,可以先打开 iPhone 上的【设置】应用。接下来在设置列表里,请点击【通用】一栏,在通用列表中,找到【辅助功能】一栏,点击进入。接着在辅助功能中,点击 3D Touch 一栏选项,便可以看到它的设置界面了。在这里可看到有一个 3D Touch 灵敏度的设置选项,分别有弱、中和强三个档次。

此时可以通过按压下方的提供的图片,来找到适合自己的按压力度。每个人对轻重按压的程度都不一样,在这里可以调整它的灵敏度。

当然 3D Touch 除了可以用在主屏上的图标以外,还可以用在应用内,比如邮件中也可以通过按压来打开邮件预览等。另外对于当前有一些第三方软件也更新了版本,用于支持 iPhone6S 中的 3D Touch 功能。如下图所中的微信就可以支持 3D Touch 功能,当然日后还会有越来越多的第三方应用软件会支持 3D Touch 功能。

组件

|| 相关文章
    无相关信息
最新文章