UE4事件相关总结

转自:http://blog.ch-wind.com/ue4-event-overview/

事件机制是实现游戏内逻辑的重要部分,在开始进行游戏逻辑的设计和实现之前,对UE4的事件机制进行理解是非常必要的。于是在这里对UE4的事件相关内容全部整理一下。

当前使用的UE版本是4.6.0。

UE4的内置事件

– Event Level Reset

这个事件如其名称,只存在于Level Blueprint。只能在服务端运行。

事件发出在关卡被重置时,例如玩家死亡后地图没有重新载入而是重置的情况。

– 碰撞检测系列

Event Actor Begin Overlap

Event Actor End Overlap

Event Hit

Overlap事件仅在两个物体的碰撞属性为Overlap且勾选了Generate Overlap Events时才会发生。而Hit事件则必须有Simulation Generates Hit Events的设置才会发出。碰撞检测事件是游戏逻辑的一个重要的触发点。

– 伤害事件

Event Any Damage

由环境等因素造成的附加伤害,例如持续性伤害的沼泽地。

Event Point Damage

点伤害,是由抛物体引起的伤害。通常用于子弹的伤害以及某些近战武器。

Event Radial Damage

辐射状伤害,通常应用于爆炸伤害或其他的间接伤害类型。

伤害事件只在服务器端发起。

– 交互事件

Event Actor Begin Cursor Over

Event Actor End Cursor Over

如其名字所描述的鼠标和物体的交互事件。

– 逻辑事件

Event Begin Play

Event End Play

比较经常用到的两个事件,在Actor于世界中初始化和被消去时触发。

Event Destroyed

当Actor被销毁时触发,这个事件已经被官方标记了,功能合并到了End Play中。

Event Tick

时钟事件,每一帧都会触发。

Event Receive Draw HUD

只有在Hud类中才有的事件,可以用于Hud的逻辑和显示设计。

碰撞检测相关

碰撞的逻辑和射线追踪使用的逻辑是大体相同的。唯一不同的是追踪扫描线本身也可以拥有响应属性,使得物体可以选择是否阻挡或者忽略这条扫描线。

一些比较重要的属性包括:

CCD

连续碰撞检测。提高碰撞检测的精度,用于防止穿墙和防止二次碰撞。通常在高速移动物体例如子弹的模拟中会用到。

Always Create Physics State

在世界载入时而不是碰撞发生时创建物理属性,可以防止游戏运行中突发的大量物理属性初始化引起的卡顿,代价是载入时间的变长。

Check Async Scene on Move

同时检查同步物理空间和异步物理空间,异步物理空间主要被用于可破坏物体被破坏后的模拟。

Trace Complex on Move

如果使用复杂追踪,则将采用多边形级的模拟。通常采用简单模拟,碰撞图形可以在编辑器中定义。

碰撞属性的优先如下:

Ignore>Overlap>Block

只有在两个参与模拟的物体具有相同的属性时才会触发相应的逻辑,否则采用优先级高的碰撞逻辑。例如两个物体相互的碰撞设置为overlap和block,则会被判定为overlap。

对于场景中的高速移动物体,即时设定了Block有时也会触发Overlap事件,所以并不建议同时使用这两种类型的事件。

更多的实例可以参考官方文档

蓝图通信相关

自定义事件

UE4允许在蓝图中自定义事件。事件的定义只在该蓝图内部有效。

自定义事件的使用方法基本和自定义函数相同。

事件调度器

事件调度器会在被调用后触发所有绑定在其上的事件。

可以绑定、解绑、解绑所有事件,同时如果定义的事件不绑定的话那么就不会被调度器调用。

蓝图接口

蓝图接口可以使得不同的物体类型提供相同的功能但是拥有各自的实现,和C++的接口功能类似。在蓝图中定义时没什么太大的问题,唯一需要留意的是对于没有输出的函数会被自动在转化为事件。如下图:

如果要在C++中使用,则需要参考文档进行。

MinimalAPI

尽量的不向外暴露内部的函数。在这个情况下,可以通过为函数指定RequiredAPI来将其暴露出去。虽然官方是这么说明的,但是RequiredAPI的使用方式不明,直接使用会提示错误,有可能是包含问题。Function Specifiers中亦没有说明,手上也没UE4的源码,由于不太可能用到这个设定所以不再研究。

DependsOn

声明依赖关系。当接口要使用到别的类中的定义时需要用到。

DependsOn=(ClassName, Classname, …)

CannotImplementInterfaceInBlueprint

蓝图不能实现的接口,该接口只能在C++中实现。使用了这个指定之后,不能在接口中将函数指定为BlueprintImplementableEvent。相对的,在没有指定亦即可以被蓝图实现的接口中不能使用BlueprintCallable。

UINTERFACE(…, meta = (CannotImplementInterfaceInBlueprint))

需要注意的是,定义的接口不能暴露属性同时如果不使用CannotImplementInterfaceInBlueprint的话也无法将函数暴露给蓝图。功能上真的就只是一个单纯的接口。

————

时间: 2024-10-12 09:12:58

UE4事件相关总结的相关文章

js事件相关知识点总结

HTML页面是怎样实现交互的? 2017-05-22 js事件之事件流: 事件流原理图:事件流是从window开始,最后回到window的一个过程,分为三个阶段(1~5)捕获过程.(5~6)目标过程.(6~10)冒泡过程. 冒泡型事件:事件按照从最具体的事件目标到最不具体的事件目标(document对象)向上传播的顺序触发. IE 5.5: div -> body -> document IE 6.0: div -> body -> html -> document Mozi

事件相关的-内存和性能

由于事件处理程序带来的交互能力,在JavaScript中,添加到页面上的事件处理程序数量将直接关系到页面的整体运行性能. 导致这一问题原因有哪些: 事件相关的处理函数越多,所占用的内存越多,函数是对象,而对象就会占据内存,从而占据内存空间.而内存越多性能就越差. 其次必须事先指定事件处理程序,则需要访问的dom次数增多,会延迟整个页面的交互就绪时间. 事实上从事件处理程序的角度出发,还有那些方法可以提升性能的? 事件委托 由于在一些常用事件是支持冒泡的,所以可以在其父节点或者其祖先节点上获取到对

UIResponder 以及事件相关..还有第一响应对象

在iOS 中,一个 UIResponder 对象表示一个可以接收触摸屏上的触摸事件的对象,通俗一点的说,就是表示一个可以接收事件的对象. iOS 中,所有显示在界面上的对象都是从 UIResponder 直接或间接继承的. 下面是 UIResponder 类的一些定义信息: 触摸事件相关: 方法名称 说明 touchesBegan:withEvent 当用户触摸到屏幕时调用方法 tochesMoved:withEvent 当用户触摸到屏幕并移动时调用此方法 tochesEnded:withEve

Vue 事件相关实例方法---on/emit/off/once

一.初始位置 平常项目中写逻辑,避免不了注册/触发各种事件 今天来研究下 Vue 中,我们平常用到的关于 on/emit/off/once 的实现原理 关于事件的方法,是在 Vue 项目下面文件中的 eventsMixin 注册的 src/core/instance/index.js import { initMixin } from './init' import { stateMixin } from './state' import { renderMixin } from './rend

Jquery基础入门-3-JQuery事件相关介绍

14-JQuery事件相关介绍-132:20 15-JQuery事件相关介绍-233:19 <strong>一.$(document).ready()和window.onload方法区别?</strong><br /> 1. 执行时机不同:<br /> ◆ window.onload方法是在网页中的元素(包括元素的所有关联文件)完全加载到浏览器后执行,即JavaScript此时才可以访问网页中的任何元素.<br /> ◆ 而$(document)

jQuery事件相关

一, 事件的概念 HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件.页面的滚动事件onscroll等等,可以向文档或者文档中的元素添加事件侦听器来预订事件. 1, 事件流 事件流描述的是从页面中接收事件的顺序 1.DOM事件流 "DOM2级事件"规定的事件流包括三个阶段: ① 事件捕获阶段: ② 处于目标阶段: ③ 事件冒泡阶段 js中还有另外一种绑定事件的方式: 1.addEventListener addEventListener 是DOM2 级事件新增

事件相关内容

1.事件 (1)事件源:触发事件的源头 (2)事件类型:什么行为 (3)事件处理函数:触发行为时要做什么事,触发事件源的对应的事件类型时,直接被执行的函数 (4)事件对象:记录事件发生的所有信息 2.事件类型 (1)鼠标类 1)onclick:点击 2)ondblclick:双击 3)onmousedown:按下 4)onmouseup:抬起 5)onmouseover|onmouseenter:进入 6)onmouseout|onmouseleave:离开 7)onmousemove:移动 8

easyui-combobox绑定回车事件相关

去掉combobox回车内容不匹配清空输入项 问题描述:easyui的combobox插件,输入的内容如果和选项不匹配时,按下回车会导致输入的内容被清空. 解决办法:要解决回车时,combobox输入内容和可选项目不匹配时清楚输入内容的问题,需要修改源代码,找到回车处理函数代码,注释掉或者退出代码执行. 本示例使用的easyui版本为1.4.3.用编辑器,如dreamweaver打开jQuery.easyui.min.js,找到function _956(e),大概在12301行,修改这个函数如

键盘事件相关

转自下面两个链接:http://www.cnblogs.com/starof/p/6558581.html   http://www.cnblogs.com/cathsfz/archive/2011/05/29/2062382.html 在 JavaScript 中监听 IME 键盘输入事件 在 JavaScript 中监听用户的键盘输入是很容易的事情,但用户一旦使用了输入法,问题就变得复杂了.输入法应当如何触发键盘事件呢?是每一下击键都触发一次事件,还是选词完毕才触发事件呢?整句输入又该如何触