转自:http://blog.csdn.net/noahzuo/article/details/51482255
反射机制
反射机制指的是程序可以在运行期间进行检测和修改自己状态的能力。
UE4引擎使用C++语言编写,C++语言本质上不支持反射机制,但是UE4提供了反射机制的实现。
FindFunction
函数
在UE4中提供了FindFunction
函数,用于在UObject
或者AActor
中查找某个函数名的函数并且返回其函数指针。
使用方法如下:
UFunction *Injured = this->FindFunction(TEXT("Injured"));
因此我们可以在Runtime时根据函数名的不同来进行函数的查找并且触发。
使用ProcessEvent
函数来进行函数的触发
在UE4中提供了ProcessEvent函数来进行触发函数指针对应的函数,具体使用方法如下:
UFunction *Injured = this->FindFunction(TEXT("Injured")); if (Injured) { ProcessEvent(Injured, nullptr); }
ProcessEvent函数第一个参数是函数指针,第二个参数指的是参数列表,其类型为void*
类型。
使用CallFunction
函数进行触发
还可以使用CallFunction函数来进行对应函数的触发,但是需要进行FFrame
的建立。
并且为了避免内存泄漏,需要注意在使用过后销毁FFrame
。
使用方法如下:
UFunction *Injured = this->FindFunction(TEXT("Injured")); if (Injured) { void* params = nullptr; FFrame* frame = new Frame(this, Injured, params); CallFunction(*frame, params, Injured); delete frame; }
额外功效
使用如下的两种方法还可以有一个额外的功能 —— 在C++中进行BP函数的调用。当需要在C++与BP进行通信时,一个做法是在关卡中进行通信,另一个做法则是使用上面的方法进行函数调用。
分类:
Unreal Engine 4
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
2016-08-08 关注博客
2016-08-08 Box2D学习blog
2014-08-08 cocos2d-x 用浏览器打开网页
2014-08-08 探索性格模型分类对游戏设计的指导作用
2014-08-08 判定一款网游为「垃圾」的标准有哪些?
2014-08-08 游戏设计中有经典的计算公式