UE4 Pak解密 掛載 載入

2021-10-03 02:53:25 字數 1994 閱讀 9125

editor下只能用未cook的資源,打包後只能用cook了的資源,否則載入不了

本例採用已加密的pak檔案,包含解密過程

簡單講解下幾個知識點:

掛載(mount):簡單理解為儲存資源的路徑,在載入時就可以通過這個路徑找到資源

載入(load):將資源載入到記憶體,必須先掛載才能載入

掛載點(mountpoint):即將檔案虛擬的掛載到某個路徑上,在ue4中即為/game可以直接讀取到的位置

iplatformfile:ue4的檔案系統,建立時必須提供上乙個iplatformfile,呈鏈狀

fpakplatformfile:繼承自iplatformfile,用來掛載pak

fplatformfilemanager:管理iplatformfile的類,setplatformfile是設定最頂層的iplatformfile

tsharedptr<>:ue4封裝的智慧型指標,這是是用於c++原生類的指標

直接上**,在注釋裡進行詳解

build.cs新增pakfile模組

publicdependencymodulenames.

addrange

(new

string

);

在自己的gameinstance.h新增如下**:

public

:uyourgameinstance

(const

class

fobjectinitializer&)

;virtual

void

init()

;//遊戲啟動時執行

virtual

void

shutdown()

;//遊戲關閉時執行

private

: iplatformfile* platformfile;

//初始檔案系統

tsharedptr pakplatformfile;

//pak檔案系統

在自己的gameinstance.cpp新增如下**:

uyourgameinstance::

uyourgameinstance

(const fobjectinitializer& objectinitializer)

:super

(objectinitializer)

void uyourgameinstance::

init()

void uyourgameinstance::

shutdown()

//這裡的檔案系統結構,pakplatformfile 從鍊錶中移除,裡面掛載的檔案將找不到

//platformfile

}//掛載函式

//pakname : pak包的路徑,相對路徑或絕對路徑皆可

//mountpoint : 掛載點的位置,編輯器下相對或者絕對路徑皆可,打包後切記一定使用相對路徑,用於相容各種檔案載入

void uyourgameinstance::

mountpakwithmountpoint

(fstring pakname, fstring mountpoint)

//將pak掛載到mountpoint

if(pakplatformfile-

>

mount

(*pakname,1,

*mountpoint)

)else

//到這裡其實已經完成了,後續就可以正常使用pak包裡的資源,用於專案中掛載和載入最好分開,一定要理解這個概念

//但是第一次寫的同學可能不太明白,下面寫一些是測試**用於載入和除錯}}

}}}}

}}//解密函式,沒啥好說的,就是用base64轉換下

void uyourgameinstance::

initencrypt

(uint8* key)

UE4 pak生成和載入

1.建立乙個pak檔案 用cmd執行開啟d epic games ue 4.15 engine binaries win64下有個unrealpak檔案 cd到路徑後 通過執行時傳遞引數 unrealpak.exe 要生成的pak檔案 create 要打包的檔案列表 order 檔案在pak中排序描...

UE4遊戲載入流程總覽 UE4遊戲載入順序

實話說,玩ue4這麼久了才關注到虛幻4的遊戲載入順序有點晚了,但是這個也是比較重要的,所以再晚也不算晚,哈哈 這個圖是官方文件上的載入順序的流程圖,從圖上可以看出,對於編輯器模式和standalone兩種模式下的載入順序完全不一樣。對於standalone模式 stand alone模式執行 來講,...

ue4 動態載入資源

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