UnrealEngine4反射機(jī)制的實(shí)現(xiàn)
來源:
52vr |
責(zé)任編輯:傳說的落葉 |
發(fā)布時間: 2019-06-13 08:38 | 瀏覽量:
這篇文章講解了在UE4中,反射機(jī)制的實(shí)現(xiàn)。
反射機(jī)制
反射機(jī)制指的是程序可以在運(yùn)行期間進(jìn)行檢測和修改自己狀態(tài)的能力。
UE4引擎使用C++語言編寫,C++語言本質(zhì)上不支持反射機(jī)制,但是UE4提供了反射機(jī)制的實(shí)現(xiàn)。
FindFunction函數(shù)
在UE4中提供了FindFunction函數(shù),用于在UObject或者AActor中查找某個函數(shù)名的函數(shù)并且返回其函數(shù)指針。
使用方法如下:
[代碼]:
1 |
UFunction *Injured = this ->FindFunction(TEXT( "Injured" )); |
因此我們可以在Runtime時根據(jù)函數(shù)名的不同來進(jìn)行函數(shù)的查找并且觸發(fā)。
使用ProcessEvent函數(shù)來進(jìn)行函數(shù)的觸發(fā)
在UE4中提供了ProcessEvent函數(shù)來進(jìn)行觸發(fā)函數(shù)指針對應(yīng)的函數(shù),具體使用方法如下:
[代碼]:
1 |
UFunction *Injured = this ->FindFunction(TEXT( "Injured" )); |
2 |
if (Injured) |
3 |
{ |
4 |
ProcessEvent(Injured, nullptr); |
5 |
} |
ProcessEvent函數(shù)第一個參數(shù)是函數(shù)指針,第二個參數(shù)指的是參數(shù)列表,其類型為void*類型。
使用CallFunction函數(shù)進(jìn)行觸發(fā)
還可以使用CallFunction函數(shù)來進(jìn)行對應(yīng)函數(shù)的觸發(fā),但是需要進(jìn)行FFrame的建立。
并且為了避免內(nèi)存泄漏,需要注意在使用過后銷毀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++中進(jìn)行BP函數(shù)的調(diào)用。當(dāng)需要在C++與BP進(jìn)行通信時,一個做法是在關(guān)卡中進(jìn)行通信,另一個做法則是使用上面的方法進(jìn)行函數(shù)調(diào)用。
-
分享到:
相關(guān)文章
網(wǎng)友評論
您需要登錄后才可以發(fā)帖 登錄 | 立即注冊
關(guān)閉
- 用戶名:
- 密 碼:
- 驗(yàn)證碼: 看不清? 點(diǎn)擊更換
- 忘記密碼?
全部評論:0條