AB分配策略:
確定如何將專案的資產劃分為AssetBundles并不容易,關鍵決策是如何將物件分組到AssetBundles中,以下是unity手冊提供的主要策略是:
1. 邏輯物體分組(Logical Entity Grouping)
例子
- 捆綁用戶界面螢屏的所有紋理和布局資料
- 捆綁一個角色/一組角色的所有模型和影片
- 捆綁跨多個級別共享的場景片段的紋理和模型
最常用的策略:按功能出現需要的資源,將需要的資源捆綁到一個ab里,這樣,加載該功能界面的時候,只要加載該ab就可以,
如果功能比較復雜,可以視情況拆分粒度 邏輯物體分組是可下載內容(DLC)的理想選擇,因為通過這種方式將所有內容分開,您可以更改單個物體,而無需下載其他不變的資產,
使用前提:開發人員必須精確地了解專案將在何時何地使用每種資產,
2. 型別分組(Type Grouping)
例子
- 預制
- 音頻
- 熱更腳本
型別分組是構建供多個平臺使用的AssetBundle的較好策略之一,
3. 并發內容分組(Concurrent Content Grouping)
例子
- 每個關卡都包含完全獨特的角色,紋理,音樂等
- 基于場景的包,每個場景束應包含大部分或所有場景依賴關系,
這些資產將同時加載和使用,
最后,無論您采用哪種策略,以下都是一些可以全面記住的其他提示:
- 將經常更新的物件與很少更改的物件分離
- 把需要同時加載的Asset盡量打包到同一個AB里,例如模型,其紋理和影片,
- 如果一次經常加載少于50%的捆綁包,請考慮將其拆分
- 如果您發現多個AssetBundle中的多個物件都依賴于完全不同的AssetBundle中的單個資產,請將依賴關系移至單獨的AssetBundle,
- 根據依賴樹進行的最優打包策略,公共資源單獨打ab,獨立資源打到一起,
- 如果不太可能同時加載兩組物件(例如標準和高清資產),請確保它們位于自己的AssetBundle中,
- 考慮合并較小(少于5到10個資產)但經常同時加載其內容的AssetBundle
- 如果一組物件只是同一物件的不同版本,請考慮使用AssetBundle Variants
- 通常情況下,1M左右的AssetBundle包加載性能最好,冗余也可以接受,但是在Unity 5.3版本之后,對于AB檔案的檔案大小其實不必再限定于1MB之內,使用LZ4壓縮,基于其Chunk的加載特點,AB加載很快,且記憶體占用要比之前小很多,所以LZ4的AB其實可以考慮更加粗粒度一些,
- shader字體等其他細碎并且需要常駐記憶體的資源打包到一起,啟動游戲的時候常駐記憶體,
- 根據專案實際需求將需要經常熱更新的資源進行單獨打包,
AssetBundle Variants
AssetBundle Variants是Unity5的新特性,你可以將兩組不同的資源指定為同一個AssetBundle但是指定不同的Variants,這樣,你可以根據平臺的不同加載不同的資源(例如支持高清資源的設備加載hd的Variants,不支持高清資源的設備加載sd的Variants),可是使用AssetImporter.assetBundleVariant設定Variants,
生成AB后會獲得 2 * (n + 1) 個檔案, 分別是
- 對應資源的 AssetBundlName, AssetBundleName.manifest : 這是資源的集合, 實際運行時需要加載的(不需要對應manifest),所以要記錄manifest的資訊,然后拷貝ab不拷貝manifest
- AssetBundle檔案所在檔案夾名字, AssetBundle檔案所在檔案夾名字.manifest : 資源依賴資訊
- 主bundle保存了所有的manifest(主要是各個bundle的依賴關系)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/392258.html
標籤:其他
上一篇:HAL庫控制PS2手柄
