1. 程式人生 > >GameFramework篇:打包需知

GameFramework篇:打包需知

開啟GameFramework場景,在編輯器模式下找到

表示當前資源載入模式是編輯器模式。(個人理解是和正常開發下的資源載入模式無異

那麼,如果我們開發完成,要打包專案呢?

肯定就不能繼續使用編輯器模式載入資源了,因為GameFramework在打包後資源載入方式是通過AB包載入。

什麼是AB包?

AssetBundle的作用是,把資源打包,然後可以動態載入,從而可以實現資源的熱更新。

正常來說,我們如果要使用AB包方式進行載入的話,需要進行很麻煩的配置,而GF已經幫我們安排好了最基礎的部分,所以在一般專案中不用過分關心這些配置,只需要把相應的資源打包進相應的包裡即可。

看完這些,已經對GF的資源載入方式有了一定的瞭解

那麼我們就以官方案例StarForce為例,進行安卓打包

以下轉載自官網說明:http://gameframework.cn/archives/320

介面從左到右分為 AssetBundle 列表、AssetBundle 內容列表和 Asset 資源列表三部分。

1、AssetBundle 列表

AssetBundle列表(AssetBundle List)列出了專案中包含的所有 AssetBundle,空 AssetBundle、場景 AssetBundle 和非場景 AssetBundle 分別用三種不同的圖示標識。

使用 AssetBundle 編輯工具 - 第2張  | Game Framework

功能按鈕說明:

① 增加新的 AssetBundle,點選後需指定 AssetBundle 的名稱(含目錄名,使用“/”分隔)和變體名稱(可空、根據需要使用)。
② 重新命名選中的 AssetBundle。
③ 移除選中的 AssetBundle。
④ 更改 AssetBundle 的載入方式,可選擇從檔案載入、從記憶體載入,或者是從記憶體中解密後加載等。
⑤ 標記此 AssetBundle 是否需要隨 App 一起釋出,若勾選則打包時會做特殊處理。

注:若新增或重新命名 AssetBundle 失敗,可能是名稱包含不合法字元(只能使用大小寫英文字母、數字、點、中劃線和下劃線)或者重名(判定重名不區分大小寫)。

2、AssetBundle 內容列表

AssetBundle 內容列表(AssetBundle Content)列出的當前選中的 AssetBundle 中包含的資源。若某個資源是無效的,會以黃色歎號字首圖示和資源的 GUID 顯示,產生無效資源的原因一般是刪除了 Asset 但沒有從 AssetBundle 內容列表中移除。

使用 AssetBundle 編輯工具 - 第3張  | Game Framework

功能按鈕說明:

① 選中 AssetBundle 內容列表中的所有資源。
② 取消 AssetBundle 內容列表中所有資源的選中狀態。
③ 更改 AssetBundle 內容列表中的顯示方式,可選擇 Name(資原始檔名)、Path(資源全路徑)或者 Guid(資源 GUID)。
④ 將選中的資源從 AssetBundle 中移除。

3、Asset 列表

Asset 列表(Asset List)列出從指定路徑下篩選出的所有資源。

使用 AssetBundle 編輯工具 - 第4張  | Game Framework

功能按鈕說明:

① 將選中的一個或多個資源增加到選中的 AssetBundle 裡。由於 Unity 的限制,不允許在一個 AssetBundle 中同時存放場景(*.unity)和非場景資源。
② 分別將已選中的一個或多個資源作為 AssetBundle 名來建立 AssetBundle,並將自身加入到對應的 AssetBundle 裡。
③ 隱藏已經存在於 AssetBundle 中的資源,只列出尚未指定 AssetBundle 的資源。
④ 從所有的 AssetBundle 中清理無效的資源,並移除所有空的 AssetBundle。建議 Save 前總是點一下 Clean 按鈕,因為構建 AssetBundle 的時候,Unity 不允許存在無效的資源或者空的 AssetBundle。
⑤ 儲存當前所有 AssetBundle 和資源的狀態。注意在使用此編輯工具的過程中隨時儲存編輯結果,若需要恢復上次編輯狀態,關閉並重新開啟此編輯工具即可。

然後我們只需要把對應的資源放進對應的AB包內就可以了,StarForce已經幫我們處理好,不需要再操作,但是我們要知道要有這個步驟,不然無法正常遊戲。

準備打包

此視窗中顯示的選項包括:轉載自http://gameframework.cn/archives/356

  • 環境資訊(Environment Information)列出了當前專案的基礎資訊。
  • 構建物件(Build Target)用於指定構建哪些平臺的 AssetBundle。
  • AssetBundle 選項(AssetBundle Options)用於指定構建 AssetBundle 時的引數,此處選項最終轉換為 Unity 中的 BuildAssetBundleOptions 列舉,一般情況下使用預設設定即可。由於構建過程需要對生成的 AssetBundle 名稱進行處理,故這裡不允許使用 Append Hash To AssetBundle Name 選項。
  • 壓縮所有 AssetBundles(Zip All AssetBundles)用於指定構建 AssetBundle 後,是否進一步使用 Zip 壓縮 AssetBundle 包。
  • 記錄離散依賴資源(Record Scattered Dependency Assets)選項會向資源列表檔案中追加依賴資源資訊,用於除錯(此部分尚未完成)。
  • 構建事件(Build Event Handler)用於指定追加構建資源包前後的行為,在實現 IBuildEvent 介面之後,即可在此處選擇。例如可以在構建資源包後自動將資源拷貝到指定目錄。
  • 內部資源版本號(Internal Resource Version)建議每次自增 1 即可,Game Framework 判定資源包是否需要更新,是使用此編號作為判定依據的。
  • 資源版本號(Resource Version)根據當前 App 版本號和內部資源版本號自動生成,作為參考顯示。
  • 輸出目錄(Output Directory)用於指定構建過程的結果輸出目錄(手動輸入的話,記得按下回車鍵 ^_^),請確保具有訪問此目錄的許可權且具有足夠的磁碟空間。
    • Working Path:Unity 生成 AssetBundle 時的工作目錄。
    • Output Package Path:為單機模式生成的檔案的所在目錄,若遊戲是單機遊戲,生成結束後將此目錄中對應平臺的檔案拷貝至 StreamingAssets 後構建 App 即可。
    • Output FullPath:為可更新模式生成的完整檔案包的所在目錄,若遊戲是網路遊戲,生成結束後應將此目錄上傳至資源伺服器,供玩家下載用。
    • Output Packed Path:為可更新模式生成的檔案的所在目錄,若遊戲是網路遊戲,生成結束後將此目錄中對應平臺的檔案拷貝至 StreamingAssets 後構建 App 即可。一個 AssetBundle 是否會生成到 Output Packed Path,取決與這個 AssetBundle 是否在 AssetBundle 編輯工具中被標記為 Packed。

之後點選Start,出包後。找到AB包所在目錄,找到目標平臺AB包

複製到Unity工程下的StreamingAssets,作為載入源

測試

將編輯器資源載入方式關閉

運行遊戲,若正常執行,則說明AB包打包成功。可以出包了

任何平臺的打包都要進行這些步驟

剛開始學這個框架,如有不妥之處,懇請指正!