【Unity3D技術文檔翻譯】第1.1篇 AssetBundle 工做流

 譯者前言:本章是關於從建立到加載,再到使用 AssetBundle 的整個流程的概述。閱讀本章將對 AssetBundle 的工做流程有個簡單而全面的瞭解。網絡

本章原文所在章節:【Unity Manual】→【Working in Unity】→【Advanced Development】→【AssetBundles】→【AssetBundle Workflow】學習

AssetBundle 工做流

能夠按照下面的這些步驟來學習 AssetBundle。關於每一個步驟的詳細內容,能夠在本文檔的其餘章節中找到。ui

將資產(Assets)配置到 AssetBundles

爲了將一個資產配置到一個 AssetBundle,須要按照如下步驟:spa

1. 從你的 Project 面板裏選擇你想要分配到 AssetBundle 裏的資源rest

2. 觀察 Inspector 面板對象

3. 在 Inspector 面板的底部,能看到一塊能夠設置 AssetBundle 及其變量的區域blog

4. 左側的下拉選項欄能夠設置 AssetBundle,右側的下拉選項欄用來設置變量遊戲

5. 左側的下拉選項欄默認顯示「None」,點擊後顯示其餘已經註冊過的 AssetBundle 的名稱選項圖片

6. 若是沒有註冊過 AssetBundle,你會看到如圖片所示的列表:資源


 
7. 點擊「New...」選項來建立一個新的 AssetBundle

8. 輸入你想要的 AssetBundle 名稱。須要注意,AssetBundle 名稱支持目錄結構。想要添加子文件夾,只須要用「/」分隔文件名稱便可。好比:若是 AssetBundle 名稱是「environment/forest」,將會在「environment」文件下建立一個名爲「forest」 的 AssetBundle

9. 一旦你選擇或者建立了一個 AssetBundle 名稱,接着你就能夠在右邊的下拉選項欄重複上述步驟,選擇或者建立一個你想要的變量名稱。變量名稱對建立 AssetBundle 不是必須的。

想要閱讀更多關於配置 AssetBundle 以及配置策略相關的內容,請看【爲打包 AssetBundles 準備資產】一節。

建立 AssetBundles

在 Asset 文件夾下建立一個 Editor 文件夾,而後將包含如下代碼的腳本文件放在 Editor 文件夾下:

這個腳本將會在「Assets」菜單的最底部,建立一個叫「Build AssetBundles」的按鈕。當你點擊該按鈕,就會執行腳本中與之對應的方法,並出現一個構建進度條。接着,全部被你命名了的資產(assets)都會被構建成對應的 AssetBundle,並放置在你定義的路徑下。在本章節中,該路徑爲:「Assets/Build AssetBundles」。

想要知道更多關於這段代碼的細節,請看【建立 AssetBundle】一節。

將 AssetBundles 更新到遠程倉庫

這一步對每一個開發者都是不一樣的,而不是 Unity 告訴你如何去作。若是你計劃將你的 AssetBundles 部署到遠程虛擬主機上,就須要繼續學習相關內容。若是你是徹底的本地開發,並打算把你全部的 AssetBundles 都放在本地磁盤上,那麼就能夠跳過關於「遠程倉庫」的內容。

加載 AssetBundles 和 資產(Assets)

對於打算從「本地倉庫」加載資源的開發者,你會對「 AssetBundles.LoadFromFile 」這個 API 感興趣。好比下面這段代碼:

LoadFromFile 的參數是 AssetBundle 的路徑。

若是你將 AssetBundles 部署在你本身的虛擬主機上,而且須要在遊戲中下載它們,那麼你會對「 UnityWebRequest 」這個 API 感興趣。好比下面這個例子:

GetAssetBundle(string, int) 的參數有兩個,一個是 AssetBundle 位置的路徑,另外一個是你想要下載的 AssetBundle 的版本。在上面這個例子中,咱們指向的是一個本地文件。咱們也能夠將本地路徑替換成任何網絡連接,以指向部署在虛擬主機上的 AssetBundles。

UnityWebRequest 有個處理 AssetBundles 的特定方法句柄:DownloadHandlerAssetBundle。這個方法句柄能夠從網絡請求(request)中獲取 AssetBundles。

不管你用的是哪一個方法,你如今均可以獲取 AssetBundle 對象了。爲了獲取 AssetBundle 對象,你可使用 LoadAsset<T>(string) 方法。該方法有兩個參數,參數T是你嘗試去加載的資源的類型;string 參數是 AssetBundle 中你想要加載的對象的名稱。這個方法會返回你從 AssetBundle 中加載的任何對象。你可使用這些返回的對象,就像使用 Unity 中的其餘任何對象同樣。 好比:若是你想要在場景中建立一個對象,你只須要調用 Instantiate(gameObjectFromAssetBundle) 便可(gameObjectFromAssetBundle 代指你從 AssetBundle 中加載的對象)。

想要了解更多關於加載 AssetBundles 的 APIs 的信息,請看【使用本地 AssetBundle】一節。

若是本文對你有幫助的話,點個贊或者評論一下吧!

相關文章
相關標籤/搜索