? av污国产在线观看,一区二区三区欧美视频,jlzz大全高潮多水老师
聯系我們

給我們留言

聯系我們

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

郵箱:info@narkii.com

電話:0595-82682267

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

當前位置:主頁 > 3D教程 > 圖文教程

UnrealEngine4反射機制的實現

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

Unreal Engine 4 —— 反射機制的實現

 
這篇文章講解了在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     voidparams = nullptr;
5     FFrame* frame = new Frame(this, Injured, params);
6     CallFunction(*frame, params, Injured);
7  
8     delete frame;
9 }
 
額外功效
 
使用如下的兩種方法還可以有一個額外的功能 —— 在C++中進行BP函數的調用。當需要在C++與BP進行通信時,一個做法是在關卡中進行通信,另一個做法則是使用上面的方法進行函數調用。

相關文章
網友評論

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

關閉

全部評論:0條

推薦
熱門