Assetbundle分包策略總結

2021-10-06 15:17:16 字數 1581 閱讀 6185

決定如何將專案內的資產分配到 assetbundle 是不容易的。光使用簡單的規則,比如將所有物件都放置到他們自己的 assetbundle 中或者將所有物件都放到乙個 assetbundle 中,但是這些方案都有明顯的缺點:

關鍵之處的如何將物件分組到 assetbundle 中。主要的策略有:

邏輯實體

物件型別

並行的內容

注意乙個專案對於不同的內容分類可以將這些並且應該將這些策略混合地使用。比如乙個專案可能需要將 ui 元素分組到不同平台的 assetbundle 中,但是靠關卡或者場景來分組他們專案關聯的內容。關於使用的策略,有一些好的指導去遵循:

相比不經常更新的內容,將經常更新的物件拆分到不同的 assetbundle 中

將可能同時載入的物件分組到一起。比如模型和他的動畫與紋理

如果乙個物件被多個 assetbundle 中的多個物件依賴,將它分配到單獨的 assetbundle 中

如果兩個物件不太可能同時載入,比如乙個紋理的高畫質和標清版本,可以將他們分配到不同的 assetbundle 中

如果是同乙個物件的不同匯入設定或者資料的不同版本,考慮使用 assetbundle 變體來替代

一旦遵循上面的指導,考慮將規定時間內小於 50% 能被載入的 assetbundle 拆分。也可以考慮將一些小的 assetbundle (資產數量小於 5 - 10 個) 合併。

邏輯實體分組

邏輯實體分組是乙個通過專案功能來分組物件的策略。當採用這種策略時,應用不同部分會單獨分組進不同的 assetbundle 中。

例如:乙個 ui 螢幕中的所有紋理和布局資料打包在一起

乙個角色的紋理、模型和動畫打包在一起

被多個關卡共享的場景碎片的紋理和模型打包在一起

邏輯實體分組是最常用的 assetbundle 策略,特別適用於:

dlc (downloadable content)

實體在應用生命週期內多處被用到

例如:通用的角色或者基本 ui 元素

完全不依賴於平台或者效能設定的實體

儘管如此,這也是最難實現的策略,因為分配物件給 assetbundle 的開發者必須精確地熟悉單個物件是怎麼樣和如何被專案使用的。

型別分組

型別分組是最簡單的策略。在這個策略中,相似或者相同型別的物件被放置到同乙個 assetbundle 中。比如,將不同的音軌放置到同乙個 assetbundle 或者不同的語言檔案放置到同乙個 assetbundle。

這個策略簡單的同時,它卻經常是在編譯時,載入時和公升級時最低效的。它最常用的物件需要同時公升級的小檔案,比如本地化檔案。

並行內容分組

並行內容分組是將需要同時載入和使用內容分組到同乙個 assetbundle 的策略。這種策略最常用在具有較強本地屬性的內容上,也就是說內容很少或者基本不可能在應用特定的位置或者時間外出現。舉個例子,關卡遊戲中沒一關卡都獨一無二的藝術呈現,角色和聲效。

實現並行內容分組的最常用的方法是通過場景來構建 assetbundle,每個 assetbundle 包括了場景中的幾乎所有的依賴。

對沒有較強本地屬性的專案,和在應用宣告週期內很少出現的內容,應該通過邏輯實體策略來分組。這兩種都是最大化使用 assetbundle 內容的大體策略。

Assetbundle分包策略總結

決定如何將專案內的資產分配到 assetbundle 是不容易的。光使用簡單的規則,比如將所有物件都放置到他們自己的 assetbundle 中或者將所有物件都放到乙個 assetbundle 中,但是這些方案都有明顯的缺點 有太多的 assetbundle 關鍵之處的如何將物件分組到 assetb...

基於AssetBundle的資源分配策略

unity的assetbundle打包機制給予我們很大的靈活性,我們能自由地將asset分配到任意乙個assetbundle包。但是在進行專案資源管理時,還是有一些規則可以參考的 主要通過資源的型別來進行分組,這樣對於不同的應用平台都具有一定的適用性。比如對於audio檔案的壓縮設定,在osx和wi...

TCP分包方法 粘包處理策略

針對三種不同的粘包現象,分包演算法分別採取了相應的解決辦法。其基本思路是首先將待處理的接收資料流 長度設為m 強行轉換成預定的結構資料形式,並從中取出結構資料長度字段,而後根據n計算得到第一包資料長度。1 若nm,則表明資料流內容尚不夠構成一完整結構資料,需留待與下一包資料合併後再行處理。也就是說,...