? ,,

亚洲午夜精品视频_国产黄大片_网站av_99亚洲伊人久久精品影院红桃_91av入口_永久免费av片在线观看全网站

聯(lián)系我們

給我們留言

聯(lián)系我們

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

郵箱:info@narkii.com

電話:0595-82682267

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

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

UE4 C++靜態(tài)加載問題的解決方法

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

[UE4]C++靜態(tài)加載問題的解決方法

 

這里說的靜態(tài)加載指的是必須在構(gòu)造函數(shù)中完成的加載方式,動態(tài)加載值得是可以在Runtime期間加載的方式,UE4源碼里面,前者其實(shí)是對后者的一層封裝,即FObjectFinder()是對LoadObject()的封裝。But,FClassFinder()不是對LoadClass()的封裝FClassFinder()內(nèi)部調(diào)用的是LoadObject()。

 

 

如果要獲取某個藍(lán)圖BP的類型class,可以通過ConstructorHelpers::FClassFinder()來獲取,例如:

 
  1. static ConstructorHelpers::FClassFinder<AActor> UnitSelector(TEXT("Blueprint'/Game/MyProject/MyBlueprint.MyBlueprint'"));  
  2. TSubclassOf<AActor> UnitSelectorClass = UnitSelector.Class;  

 
但是在啟動游戲時會報(bào)錯提示找不到文件,例如:

 

Default property warnings and errors:

Error: COD Constructor (MyGameMode): Failed to find /Game/MyProject/MyBlueprint.MyBlueprint

 

解決辦法有兩種(這是UE4的一個坑,浪費(fèi)了我很長時間。。。):

A,在copy reference出來的文件路徑后面加_C,例如:Blueprint'/Game/Blueprints/MyBlueprint.MyBlueprint_C'


  1. static ConstructorHelpers::FClassFinder<AActor> UnitSelector(TEXT("Blueprint'/Game/Blueprints/MyBlueprint.MyBlueprint_C'"));  
  2. TSubclassOf<AActor> UnitSelectorClass = UnitSelector.Class;  

   

B,去掉路徑前綴:/Game/Blueprints/MyBlueprint

 
  1. static ConstructorHelpers::FClassFinder<AActor> UnitSelector(TEXT("/Game/Blueprints/MyBlueprint"));  
  2. TSubclassOf<AActor> UnitSelectorClass = UnitSelector.Class;  

 

另外注意:FClassFinder<T>的模版名稱,不能直接寫UBlueprint,例如:FClassFinder<UBlueprint>是錯誤的。創(chuàng)建藍(lán)圖時選擇的是什么父類,則寫對應(yīng)的父類名,假如是Actor,那么要寫成:FClassFinder<AActor>,否則無法加載成功。

 

 

使用TSubclassOf<T>時模板名必須相同

另外, FClassFinder<T>()函數(shù)中的模版名必須和TSubclassOf<T>變量的模版名一樣,例如上面的都是AActor,如果不一樣,也會出現(xiàn)上面的錯誤。
再給個例子:

 
  1. static ConstructorHelpers::FClassFinder<UUserWidget> TestBP(TEXT("/Game/Blueprints/MyWidget_BP"));  
  2. TSubclassOf<UUserWidget> MyWidgetClass = TestBP.Class;  

 

也可使用UClass*替換TSubclassOf<T>

例如:

 
  1. static ConstructorHelpers::FClassFinder<UUserWidget> TestBP(TEXT("/Game/Blueprints/MyWidget_BP"));  
  2. UClass* MyWidgetClass = TestBP.Class;  

 

 

之前看到很多例子是通過FObjectFinder()來獲取class,現(xiàn)在想想感覺是無奈之舉,UE4的文檔比較坑,不僅藍(lán)圖的文檔更新不同步,C++的文檔更是少得可憐。

 
  1. static ConstructorHelpers::FObjectFinder<UBlueprint> UnitSelector(TEXT("Blueprint'/Game/MyProject/MyBlueprint.MyBlueprint'"));  
  2. TSubclassOf<AActor> UnitSelectorClass = (UClass*)UnitSelector.Object->GeneratedClass;  

 

其他參考:

CDO Constructor: Failed to find Blueprint

https://answers.unrealengine.com/questions/84880/cdo-constructor-failed-to-find-blueprint-ue-44.html


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

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

關(guān)閉

全部評論:0條

推薦
熱門
主站蜘蛛池模板: 99久久久国产精品免费蜜臀 | 日韩欧美在线视频 | 免费视频二区 | 天天操综合网 | 在线你懂的网址 | 青青草国产免费久久久91 | 国产碰碰| 情五月 | 亚洲日韩精品射精日 | 黄色毛片视频免费 | 精品人妻大屁股白浆无码 | 国产精品大白天新婚身材 | 日本性一级 | 色欲国产麻豆一精品一av一免费 | 国内一区亚洲综合图区欧美 | 国产亚洲精品久久久久久久久 | 小明免费视频一区二区 | 亚洲熟女精品中文字幕 | 久久精品久久精品久久精品 | 人妻无码熟妇乱又伦精品视频 | 成人福利网址永久在线观看 | 日本一本免费一二区 | 无码一区二区波多野结衣播放搜索 | 国内精品久久久久影院蜜芽 | 成人免费黄色小视频 | 久久精品国产第一区二区三区 | 日本高清视频www | 亚洲欧美日韩国产精品26u | 美女张开腿让男人桶视频 | 又大又粗弄得我出好多水 | 欧美成人性色 | 亚洲精品国产一区二区三 | 成年性午夜免费视频网站 | 丰满少妇在线观看网站 | 国产精品美脚玉足脚交欧美 | 中文字幕日韩三级片 | 国产第六页 | 国产精品久久久久9999爆乳 | 午夜dj在线观看免费视频 | 久久成人a毛片免费观看网站 | 吃奶揉捏奶头高潮视频在线观看 |