? 被老汉耸动呻吟双性美人,黄色成年人网站免费,不付费看黄神器
聯(lián)系我們

給我們留言

聯(lián)系我們

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

郵箱:info@narkii.com

電話:0595-82682267

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

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

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

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

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

 
這篇文章講解了在UE4中,反射機(jī)制的實(shí)現(xiàn)。
 
反射機(jī)制
 
反射機(jī)制指的是程序可以在運(yùn)行期間進(jìn)行檢測(cè)和修改自己狀態(tài)的能力。
 
UE4引擎使用C++語(yǔ)言編寫(xiě),C++語(yǔ)言本質(zhì)上不支持反射機(jī)制,但是UE4提供了反射機(jī)制的實(shí)現(xiàn)。
 
FindFunction函數(shù)
 
在UE4中提供了FindFunction函數(shù),用于在UObject或者AActor中查找某個(gè)函數(shù)名的函數(shù)并且返回其函數(shù)指針。
 
使用方法如下:
 

[代碼]:

1 UFunction *Injured = this->FindFunction(TEXT("Injured"));
 
因此我們可以在Runtime時(shí)根據(jù)函數(shù)名的不同來(lái)進(jìn)行函數(shù)的查找并且觸發(fā)。
 
使用ProcessEvent函數(shù)來(lái)進(jìn)行函數(shù)的觸發(fā)
 
在UE4中提供了ProcessEvent函數(shù)來(lái)進(jìn)行觸發(fā)函數(shù)指針對(duì)應(yīng)的函數(shù),具體使用方法如下:
 

[代碼]:

1 UFunction *Injured = this->FindFunction(TEXT("Injured"));
2 if (Injured)
3 {
4     ProcessEvent(Injured, nullptr);
5 }
 
ProcessEvent函數(shù)第一個(gè)參數(shù)是函數(shù)指針,第二個(gè)參數(shù)指的是參數(shù)列表,其類型為void*類型。
 
使用CallFunction函數(shù)進(jìn)行觸發(fā)
 
還可以使用CallFunction函數(shù)來(lái)進(jìn)行對(duì)應(yīng)函數(shù)的觸發(fā),但是需要進(jìn)行FFrame的建立。
 
并且為了避免內(nèi)存泄漏,需要注意在使用過(guò)后銷毀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 }
 
額外功效
 
使用如下的兩種方法還可以有一個(gè)額外的功能 —— 在C++中進(jìn)行BP函數(shù)的調(diào)用。當(dāng)需要在C++與BP進(jìn)行通信時(shí),一個(gè)做法是在關(guān)卡中進(jìn)行通信,另一個(gè)做法則是使用上面的方法進(jìn)行函數(shù)調(diào)用。

相關(guān)文章
網(wǎng)友評(píng)論

您需要登錄后才可以發(fā)帖 登錄 | 立即注冊(cè)

關(guān)閉

全部評(píng)論:0條

推薦
熱門