UE4通过代码逻辑触发相应事件,相应事件逻辑在蓝图实现
来源:互联网 发布:钻孔加工编程例子 编辑:程序博客网 时间:2024/06/09 18:41
很多时候我们是通过代码写游戏逻辑,当逻辑执行到某个状态时,能够通过事件的方式触发另外一段逻辑,而触发的这段逻辑希望在蓝图中实现,这时候就存在一个代码和蓝图事件连接和调用的问题。实现此功能很简单,有两种方式,一种是通过代码定义事件接口,实现逻辑完全放在蓝图中,代码中没有默认实现逻辑;另外一种是在代码中有默认实现逻辑,但在蓝图中可以重写。
针对第一种方式,可以直接参考最常用的Actor类中的BeginPlay事件逻辑的实现方式,现在把相应的部分代码显示如下:
/** Event when play begins for this actor. */
UFUNCTION(BlueprintImplementableEvent, meta=(DisplayName = "BeginPlay"))
void ReceiveBeginPlay();
/** Event when play begins for this actor. */
virtual void BeginPlay();
上面的ReceiveBeginPlay就是要在蓝图中实现的事件逻辑,该函数在代码中没有函数体,这里很关键的就是BlueprintImplementableEvent函数属性,它定义了该函数需要在蓝图中实现,并且是事件形式。
事件本身其实也是函数调用,那这个事件是怎么触发的呢?也就是ReceiveBeginPlay函数怎么被调用呢?相比你也猜到了,看下BeginPlay函数的实现就明白了,ReceiveBeginPlay是在BeginPlay函数中调用的,
void AActor::BeginPlay()
{
......
ReceiveBeginPlay();
......
}
这下就真相大白了,实现方式可以总结一下就是:代码中声明事件函数但没有函数体,将函数属性设置为BlueprintImplementableEvent,在代码中相应地方调用该函数,我们暂且叫蓝图事件函数,或者直接称作在代码中触发事件吧。
上面的这种方式就是必须在蓝图中实现事件触发后的逻辑,否则不起任何作用,另外一种则是可以在代码中实现默认的逻辑,可以在蓝图中重写。
这种方式我们可以参考官方文档中的一个示例,这里我们摘录核心代码,
UFUNCTION(BlueprintNativeEvent) void CountdownHasFinished(); virtual void CountdownHasFinished_Implementation();
事件函数的调用和第一种方式一样,直接在相应代码逻辑处调用即可,但要注意,调用的是事件函数声明时的函数名,不是实现函数名,即上面的CountdownHasFinished而不是CountdownHasFinished_Implementation。
以上两种方式在游戏开发中经常会使用,比如在做多人游戏时,当客户端与服务器的网络断开时,我们可能要通知玩家网络已断开连接,这时我们可以在响应服务器的连接处理的逻辑处调用一个蓝图事件函数,我们在蓝图中处理具体的网络连接断开提示等逻辑。
Unreal技术交流学习请加群:173090312 Unreal高级开发群
- UE4通过代码逻辑触发相应事件,相应事件逻辑在蓝图实现
- html 页面相应触发事件
- ABAP--通过自定义类使用ALV(相应事件)的代码
- ABAP--通过自定义类使用ALV(相应事件)的代码
- UIWebView 相应本地事件
- 节点事件相应
- 节点事件相应
- UITableView相应Touch事件
- UE4-碰撞事件:开关门蓝图类实现提升篇
- webview中的图片相应事件相应 坑
- 解决内部元素onMouseOver/onMouseOut事件冒泡触发父元素的相应事件
- UE4 C++注册事件到蓝图调用
- ExpandableListView的setOnChildClickListener事件相应
- iOS的事件相应方式
- U3D添加按钮相应事件
- Unity自定义事件相应区域
- OpenCV相应鼠标点击事件
- UE4发报机-关卡蓝图绑定事件到蓝图类
- 向量唯一化
- swust1736: 飞行员配对方案问题
- Request对象中可以获取各种路径信息
- iOS开发支付集成之微信支付
- git.oschina免费的、分布式代码管理工具
- UE4通过代码逻辑触发相应事件,相应事件逻辑在蓝图实现
- MYSQL笔记二
- 求5阶矩阵其对角线上所有元素之和
- poj 2395 MST的最大边(水)
- 三个方法让你成为更好的程序员
- android开发中涉及到的度量单位
- HDE 1180 诡异的楼梯
- shell学习-2
- <<More Effective C++>>读书笔记1: 基础议题