天天看點

GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat

打包配置

GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat

左邊為ab包,中間為ab包中内容,右邊為項目中資源檔案

點選save,SaveConfiguration,儲存打包關系到ResourceCollection.xml中

是否使用檔案系統,隻能在xml中手動配置,代表下載下傳完後會把幾個零散的ab檔案合成一個檔案

GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat

是否随APP釋出打包

1、AssetBundle 清單

AssetBundle清單(AssetBundle List)列出了項目中包含的所有 AssetBundle,空 AssetBundle、場景 AssetBundle 和非場景 AssetBundle 分别用三種不同的圖示辨別。

GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat

功能按鈕說明:

① 增加新的 AssetBundle,點選後需指定 AssetBundle 的名稱(含目錄名,使用“/”分隔)和變體名稱(可空、根據需要使用)。

② 重命名選中的 AssetBundle。

③ 移除選中的 AssetBundle。

④ 更改 AssetBundle 的加載方式,可選擇從檔案加載、從記憶體加載,或者是從記憶體中解密後加載等。

⑤ 标記此 AssetBundle 是否需要随 App 一起釋出,若勾選則打包時會做特殊處理。

packed作用應該是,打包app,可附帶部分資源進入app。。随後熱更是根據伺服器檔案清單與app安裝後釋放到的可讀寫路徑下随包packed,再做差異更新

是否使用檔案系統

隻能在xml中手動配置,代表下載下傳完後會把幾個零散的ab檔案合成一個檔案

GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat

如何避免備援

/// <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包

GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat
  1. 可以選擇項目中的壓縮格式,預設的是GZip
  2. 每次打包資源版本号會自增1
  3. 打包輸出路徑不能為項目裡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包到伺服器檔案夾

複制檔案過去

GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat

伺服器中建立Version.txt檔案

填充内容在打包報告中找

GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat

找到這行,把裡面内容填充到Version.txt

GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat

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與更新模式

GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat
GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat

遠端位址修改

GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat

改為伺服器位址,格式如下

{

“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”: “”

}

運作下載下傳

GameFramework:打包資源,打随app釋出包,打包生成檔案夾說明,上傳資源至伺服器,下載下傳資源,GameFreamworkList.dat 與GameFrameworkVersion.dat

繼續閱讀