UE4中資源載入資源的方式

2022-06-18 09:36:09 字數 2203 閱讀 6729

在unity中,我們載入資源一般是通過resources.load(path).即可完成.該方法返回的是object型別.如果你想要的是材質或者貼圖等等,只要**型別轉換的關鍵字就可以了例如 as material,則可以返回乙個材質的引用...

在ue4中,載入資源的方式區別較大.經過自己乙個下午的摸索,目前發現了這4種資源的載入方式.在ue4中,它的藍圖就大致等於untiy中的prefab.所以我們將資源弄成了藍圖的方式來進行載入.

第一種: 如果該藍圖有c++類(或者說是從c++類建立的藍圖),直接進行載入

[cpp]view

plain

copy

atemp* spawnactor = getworld()->spawnactor(atemp::staticclass());  

所有的載入資源並建立到場景中的方式都離不開spawnactor這一句**.如果你的藍圖包含了c++類,那麼可以直接訪問類的staticclass

剩下的載入方式均是單純的載入藍圖,並沒有對應的c++類

第二種: 通過constructorhelpers來載入

[cpp]view

plain

copy

static

constructorhelpers::fclassfinderbpclass(text(

"/game/blueprint/testobj"

));  

if(bpclass.class != null)  

fclassfinder是乙個結構體,其中的class成員變數是tsubclassof型別的.所以我們只需要spawnactor(bpclass.class)就可以生成我們要的東西了

但是值得一提的是該方法只能在類的建構函式中使用,如果在普通的邏輯**中巢狀這份**,很可能引起整個編譯器的crash.以下是該**的具體執行步驟

[cpp]view

plain

copy

struct

fclassfinder  

bool

succeeded()  

};  

不難看出該方法在一開頭的地方就先檢查了是否在建構函式中.checkifisinconstructor,,如果不是的話可能會引起crash(具體原因不明)...然後通過路徑去找到我們要載入的類,並返回給我們.另外一點,該變數必須是static的...

第三種: 通過fstringassetreference來載入

[cpp]view

plain

copy

fstringassetreference asset = 

"blueprint'/game/blueprint/testobj.testobj'"

;  uobject* itemobj = asset.resolveobject();  

ublueprint* gen = cast(itemobj);  

if(gen != null)   

*/  

fstringassetreference類的作用主要是通過乙個字串,找到該字串所對應的資源.或者通過給定的資源,找到該資源所對應的在專案中的路徑,也就是前面所說的字串

其中,asset.resolveobject就是查詢字串對應的資源,返回乙個uobejct,我們通過將其轉化成ublueprint型別然後再去的他的generateclass即可.

第四種:  通過staticloadobject來載入

[cpp]view

plain

copy

uobject* loadobj = staticloadobject(ublueprint::staticclass(), null, text(

"blueprint'/game/blueprint/testobj.testobj'"

));  

if(loadobj != nullptr)  

原理的話幾乎是和第三種是一樣的.只是呼叫的方式不同而已.在這裡就不再贅述了.

總結下來,第三種和第四種應該是最通用的.因為第一種要求有對應的藍圖c++類,而第二種又要求一定要是在建構函式中完成(不論是在誰的建構函式都可以,但該方法一定只能在建構函式中呼叫)...

想不到乙個簡單的載入資源也有這麼多種方式...我已經給跪了...天吶...

UE4中資源載入資源的方式

在unity中,我們載入資源一般是通過resources.load path 即可完成.該方法返回的是object型別.如果你想要的是材質或者貼圖等等,只要 型別轉換的關鍵字就可以了例如 as material,則可以返回乙個材質的引用.在ue4中,載入資源的方式區別較大.經過自己乙個下午的摸索,目...

ue4 動態載入資源

動態載入非藍圖資源 如 聲音等使用loadobject 資源型別 nullptr,text 資源路徑引用 載入藍圖資源 獲得藍圖類 loadclass 藍圖的型別 nullptr,text 資源路徑引用 c 這裡需要注意就是資源的路徑需要額外加上 c 例如uclass result1 loadcla...

UE4資源載入,持續更新中

在專案推進中,有很多種獲取資源的需求需要我們處理。例如 因為藍圖類有自己的配置,沒辦法直接用staticclass直接使用藍圖子類。當然,我們可以用staticload等等,這些我就在文章中說一下。真實的關係很複雜,在此一定要區分兩個概念。資源和內容。資源包裹著內容。ue4的各種載入都是在讀取資源。...