打包配置

左邊為ab包,中間為ab包中内容,右邊為項目中資源檔案
點選save,SaveConfiguration,儲存打包關系到ResourceCollection.xml中
是否使用檔案系統,隻能在xml中手動配置,代表下載下傳完後會把幾個零散的ab檔案合成一個檔案
是否随APP釋出打包
1、AssetBundle 清單
AssetBundle清單(AssetBundle List)列出了項目中包含的所有 AssetBundle,空 AssetBundle、場景 AssetBundle 和非場景 AssetBundle 分别用三種不同的圖示辨別。
功能按鈕說明:
① 增加新的 AssetBundle,點選後需指定 AssetBundle 的名稱(含目錄名,使用“/”分隔)和變體名稱(可空、根據需要使用)。
② 重命名選中的 AssetBundle。
③ 移除選中的 AssetBundle。
④ 更改 AssetBundle 的加載方式,可選擇從檔案加載、從記憶體加載,或者是從記憶體中解密後加載等。
⑤ 标記此 AssetBundle 是否需要随 App 一起釋出,若勾選則打包時會做特殊處理。
packed作用應該是,打包app,可附帶部分資源進入app。。随後熱更是根據伺服器檔案清單與app安裝後釋放到的可讀寫路徑下随包packed,再做差異更新
是否使用檔案系統
隻能在xml中手動配置,代表下載下傳完後會把幾個零散的ab檔案合成一個檔案
如何避免備援
/// <summary>
/// 資源。
/// </summary>
public sealed class Resource
{
public List<Asset> m_Assets;
/// <summary>
/// 資源。
/// </summary>
public sealed class Asset : IComparable<Asset>
{
private Asset(string guid, Resource resource)
{
Guid = guid;
Resource = resource;
}
如果一個asset打入a.bundle,會從原來所在的b.bundle移除
bundle:TestNew中塞入asset->{“Guid”:“4a17d2c656f5c6b44a31e3ee547a76b0”
Bundle:DataTables:取消asset->{“Guid”:“4a17d2c656f5c6b44a31e3ee547a76b0”,
打AB包
- 可以選擇項目中的壓縮格式,預設的是GZip
- 每次打包資源版本号會自增1
-
打包輸出路徑不能為項目裡Assets/StreamingAssets目錄,應該在assets目錄外打包
代碼中調用ResourceBuilderController.BuildResources
打包出來檔案夾說明
Working Path:Unity 生成 AssetBundle 時的工作目錄。
Output Package Path:為單機模式生成的檔案的所在目錄,若遊戲是單機遊戲,生成結束後将此目錄中對應平台的檔案拷貝至 StreamingAssets 後建構 App 即可。
Output FullPath:為可更新模式生成的完整檔案包的所在目錄,若遊戲是網絡遊戲,生成結束後應将此目錄上傳至資源伺服器,供玩家下載下傳用。
Output Packed Path:為可更新模式生成的檔案的所在目錄,若遊戲是網絡遊戲,生成結束後将此目錄中對應平台的檔案拷貝至 StreamingAssets 後建構 App 即可。一個 AssetBundle 是否會生成到 Output Packed Path,取決與這個 AssetBundle 是否在 AssetBundle 編輯工具中被标記為 Packed。
Packed與Full檔案夾
AB包和非AB封包件,在GF中被統一抽象為 Resource 檔案,檔案字尾為.dat ,在我們的資源清單中,記錄的即是這些 .dat 資源檔案的資源資訊,資訊中包含了這些資源檔案的名稱,hashcode,長度,zipHashcode,zip長度,是否AB包,加載設定,等等資訊。
"生成目錄/ Packed " (此目錄下存儲的是随APP一起釋出的資源)
“生成目錄/Full” (此目錄下存儲的是所有資源)
GameFreamworkList.dat 與GameFrameworkVersion.XXXX.dat
GameFreamworkList.dat (Packed中) 和 GameFrameworkVersion.XXXX.dat (Full 中) ,遊戲中總的資源資訊會記錄在 GameFrameworkVersion.XXXX.dat 檔案中,此檔案是作為用戶端資源總表而存在的,遊戲的資源檔案和資源資訊的處理和操作都已此表為準。而 GameFreamworkList.dat 檔案是作為用戶端目錄的目前資源記錄表存在,隻是記錄了目前所在的目錄下的資源檔案資訊。
需要把 Packed 檔案夾下的所有檔案,拷貝到工程中的 streamingAssets 目錄下,再釋出APP(ResourceEditor面闆中标記Resource 為Pakeaged 後這個 Resource 就會打包到 Packed中)。隻讀目錄下的 GameFreamworkList.dat 隻記錄了本目錄下的所有資源檔案的資訊,這些資訊再以後的資源校驗中會被使用。資源總表 GameFrameworkVersion.XXXX.dat 在可更新模式下是可以不随安裝包一起釋出,因為這個檔案後面會被下載下傳到讀寫目錄中。
應用每一次啟動,首先需要你先得到目前資源總表的内部版本号(内部版本号在ResourceBuilder面闆設定。至于内部版本号的動态擷取過程,采用何種方式,則需要自己來實作),然後即可使用這個最新的内部版本号,調用
CheckVersionListResult ResourceComponent.CheckVersionList(int latestInternalResourceVersion)
來判定目前的資源總表是不是最新的,此時 CheckVersionList 方法會通路讀寫目錄,并嘗試讀取 GameFrameworkVersion.XXXX.dat 檔案,如果檔案沒有或者内部攜帶的資源内部版本号與你傳遞進來的不同,則會傳回資源需要更新的枚舉值,否則則會傳回不需要更新。
上傳AB包到伺服器檔案夾
複制檔案過去
伺服器中建立Version.txt檔案
填充内容在打包報告中找
找到這行,把裡面内容填充到Version.txt
Version.txt填充為
{
"ForceUpdateGame": false,
"LatestGameVersion": "0.1.0",
"InternalGameVersion": 0,
"InternalResourceVersion": 2,
"UpdatePrefixUri": "http://10.12.24.82:10089/Windows",
"VersionListLength": 7138,
"VersionListHashCode": -1969978894,
"VersionListCompressedLength": 2653,
"VersionListCompressedHashCode": 861209557
}
出現負數不影響使用,為crc32碼轉為int出現的負數
Unity使用真實ab與更新模式
遠端位址修改
改為伺服器位址,格式如下
{
“GameVersion”: “0.1.0”,
“InternalGameVersion”: 0,
“CheckVersionUrl”: “http://10.12.24.82:10089/{0}/Version.txt”,
“WindowsAppUrl”: “https://starforce.gameframework.cn”,
“MacOSAppUrl”: “https://starforce.gameframework.cn”,
“IOSAppUrl”: “https://starforce.gameframework.cn”,
“AndroidAppUrl”: “https://starforce.gameframework.cn”,
“END_OF_JSON”: “”
}