UnrealEngine4反射機制的實現
來源:
52vr |
責任編輯:傳說的落葉 |
發(fā)布時間: 2019-06-13 08:38 | 瀏覽量:
這篇文章講解了在UE4中,反射機制的實現。
反射機制
反射機制指的是程序可以在運行期間進行檢測和修改自己狀態(tài)的能力。
UE4引擎使用C++語言編寫,C++語言本質上不支持反射機制,但是UE4提供了反射機制的實現。
FindFunction函數
在UE4中提供了FindFunction函數,用于在UObject或者AActor中查找某個函數名的函數并且返回其函數指針。
使用方法如下:
[代碼]:
1 |
UFunction *Injured = this ->FindFunction(TEXT( "Injured" )); |
因此我們可以在Runtime時根據函數名的不同來進行函數的查找并且觸發(fā)。
使用ProcessEvent函數來進行函數的觸發(fā)
在UE4中提供了ProcessEvent函數來進行觸發(fā)函數指針對應的函數,具體使用方法如下:
[代碼]:
1 |
UFunction *Injured = this ->FindFunction(TEXT( "Injured" )); |
2 |
if (Injured) |
3 |
{ |
4 |
ProcessEvent(Injured, nullptr); |
5 |
} |
ProcessEvent函數第一個參數是函數指針,第二個參數指的是參數列表,其類型為void*類型。
使用CallFunction函數進行觸發(fā)
還可以使用CallFunction函數來進行對應函數的觸發(fā),但是需要進行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條
推薦
熱門