Event System 事件系统

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Event System 事件系统相关的知识,希望对你有一定的参考价值。

参考技术A 发送事件的事件系统是一种应用程序中的对象基于输入,键盘,鼠标,触摸,或自定义输入。事件系统由几个组件一起执行。

当你添加一个事件系统组件GameObject你会注意到它没有多的功能暴露,这是因为事件系统本身设计经理和主持人的事件系统模块之间的通信。

1管理GameObject被认为是选择  
2管理输入模块使用  
3管理Raycasting(如果需要的话)   
4根据需要更新所有输入模块

一个输入模块的主要逻辑是如何希望事件系统行为的生活,它们的用途

1处理输入  
2管理事件状态  
3发送事件到场景对象。

只能激活一个输入模块的事件系统,和他们必须组件在同一GameObject事件系统组件。   
如果您希望编写一个定制的输入模块建议您发送事件支持现有的UI组件在统一中,但是你也能够扩展和编写自己的事件消息传递系统的详细文档。

Raycasters用于发送找出的指针,它是常见的输入模块的使用场景中的Raycasters配置计算定位设备是什么。

图形Raycaster——用于UI元素  
物理2 d Raycaster——用于二维物理元素  
物理Raycaster——用于3 d物理元素

如果你有一个2 d / 3 d Raycaster中配置你的场景很容易可能非UI元素从输入模块接收消息。简单的附加事件的一个脚本,实现一个接口。

2-5 事件系统(Event System)

重点

  • 1.对于用户操作的事件,是由事件系统控制的
  • 2.事件系统的动作是通过输入模块定义的
  • 3.对于那个对象发生事件,由光线投射判定。

2-3-1 事件系统概要
事件系统通过场景中的“Event System”对象所附加的组件发挥功能

技术图片

 

 

Standalone Input Module(独立输入模块)组件是具有通过鼠标,键盘和游戏控制杆输入功能
Touch Input Module(触摸输入模块)组件是具有智能手机和平板电脑等移动设备上触碰功能

现在2018.3.9f1版本中,Touch Input Module已经在Standalone Input Module模块中了,不推荐挂载
“EcentSystem”对象通常是在创建画布的同时创建的,此外还能通过GameObject菜单选择“UI”>"Event System"来创建
通常附加事件系统的游戏组件,一个场景只能放置一个,虽然也可以强制添加,但是在Play模式下会显示警告
Event System(事件系统)基本具有以下作用
管理已选游戏对象
管理活动的输入模块
更新所有输入模块
通过光线投射判断对象
而且,EventSystem类以及Standalone Input Module类,Touch Input Module类等输入模块的类,TouchInputModule类等输入模块的类是在UnityEngine.EventSystems命名空间定义的。


Event System组件的动作
该组件用于处理场景中的事件。他与各输入模块联动执行动作,主要向保持状态(State)或可特定覆盖组件传递信息


Event System组件按照以下流程进行

1.如同附加Event System组件一样附加,在游戏对象也附加了输入模块,动作开始时,找到此模块,然后添加到内部列表中,
2.每当调用Update方法时,所附加的各个输入模块的UpdataModule方法就会被调用。而各个输入模块,通过UpdataModule方法可以改变内部状态。
3.在调用所有输入模块的UpdataModule方法后,调用活动的输入模块的Process方法,要实现独立调用时,则编写在此去


 

 

Event System组件的属性

技术图片

 

 

First Selected
设置最初的对象
Send Navigation Events
勾选时,发送当前操作键盘或游戏控制杆时发生的导航事件(OnMove事件,OnSubmit事件,OnCancel事件)
Drag Threshold
以像素单位来设置判断拖拽已经开始的移动距离



输入模块
输入模块(Input Module)是定义要让事件系统执行什么动作的组件,被用于接收输入,管理事件状态,向场景中的对象发送事件等,
输入模块只有一个会处于活跃状态。这个根据操作系统的环境来决定


 

Standalone Input Module组件
此组件是在编辑器和电脑等独立环境中,通过鼠标,键盘或游戏控制杆来处理输入的,它用来追踪鼠标光标,或者键盘,游戏控制杆的输入,点击

技术图片

 

 

Horizontal Axis
指定与横轴按钮相对应的输入管理器(Input Manager)的设置
可通过“Edit”菜单中的“Project Settings” 中的“Input”打开,在里面可以定义该项目中所有输入以及输入相对于的游戏中的动作。
Vertical Axis
同上,但是指定的是纵轴相对应的输入管理器设置
Submit Button
指定确认(Submit)按钮相对应的输入管理器的设置
Cancel Button
指定取消(Cancel)按钮相对应的输入管理器的设置
Input Actions Per Second
设置每秒可以接受多少次键盘或者游戏控制杆的输入动作
Repeat Delay
为了避免键盘或者游戏杆在无意状态下练续输入,设置连续输入起止之间延迟的时间。
Force Module Active

以上是关于Event System 事件系统的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式Linux系统的电子书阅读器项目4——Input Event System

完整的基于PHP的登录/注册系统、档案系统、聊天室、论坛系统和博客/民意调查/事件管理系统。

Unity3D-UGUI原理篇Event System Manager 事件与触发

GameFramework框架详解之 Event事件系统

如何使用OpenCart 2.x Event事件系统

浅析mpvue的事件代理系统