? 18精品久久久无码午夜福利趣视,91精品酒店情侣在线播放,色先锋影音av色先锋资源321网
聯(lián)系我們

給我們留言

聯(lián)系我們

地址:福建省晉江市青陽街道洪山路國際工業(yè)設(shè)計園納金網(wǎng)

郵箱:info@narkii.com

電話:0595-82682267

(周一到周五, 周六周日休息)

當(dāng)前位置:主頁 > 3D教程 > 圖文教程

UnrealEngine4反射機(jī)制的實(shí)現(xiàn)

來源: 52vr | 責(zé)任編輯:傳說的落葉 | 發(fā)布時間: 2019-06-13 08:38 | 瀏覽量:

Unreal Engine 4 —— 反射機(jī)制的實(shí)現(xiàn)

 
這篇文章講解了在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     voidparams = 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)閉

全部評論:0條

推薦
熱門