UnrealEngine4反射机制的实现
来源:
52vr |
责任编辑:传说的落叶 |
发布时间: 2019-06-13 08:38 | 浏览量:
这篇文章讲解了在UE4中,反射机制的实现。
反射机制
反射机制指的是程序可以在运行期间进行检测和修改自己状态的能力。
UE4引擎使用C++语言编写,C++语言本质上不支持反射机制,但是UE4提供了反射机制的实现。
FindFunction函数
在UE4中提供了FindFunction函数,用于在UObject或者AActor中查找某个函数名的函数并且返回其函数指针。
使用方法如下:
[代码]:
1 |
UFunction *Injured = this ->FindFunction(TEXT( "Injured" )); |
因此我们可以在Runtime时根据函数名的不同来进行函数的查找并且触发。
使用ProcessEvent函数来进行函数的触发
在UE4中提供了ProcessEvent函数来进行触发函数指针对应的函数,具体使用方法如下:
[代码]:
1 |
UFunction *Injured = this ->FindFunction(TEXT( "Injured" )); |
2 |
if (Injured) |
3 |
{ |
4 |
ProcessEvent(Injured, nullptr); |
5 |
} |
ProcessEvent函数第一个参数是函数指针,第二个参数指的是参数列表,其类型为void*类型。
使用CallFunction函数进行触发
还可以使用CallFunction函数来进行对应函数的触发,但是需要进行FFrame的建立。
并且为了避免内存泄漏,需要注意在使用过后销毁FFrame。
使用方法如下:
[代码]:
1 |
UFunction *Injured = this ->FindFunction(TEXT( "Injured" )); |
2 |
if (Injured) |
3 |
{ |
4 |
void * params = nullptr; |
5 |
FFrame* frame = new Frame( this , Injured, params ); |
6 |
CallFunction(*frame, params , Injured); |
7 |
8 |
delete frame; |
9 |
} |
额外功效
使用如下的两种方法还可以有一个额外的功能 —— 在C++中进行BP函数的调用。当需要在C++与BP进行通信时,一个做法是在关卡中进行通信,另一个做法则是使用上面的方法进行函数调用。
相关文章
网友评论
全部评论:0条
推荐
热门