1. 程式人生 > >【Unity3D技術文檔翻譯】第1.1篇 AssetBundle 工作流

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

如何 倉庫 ring 資源 string int 觀察 你是 本地

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

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

AssetBundle 工作流

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

將資產(Assets)配置到 AssetBundles

為了將一個資產配置到一個 AssetBundle,需要按照以下步驟:

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

2. 觀察 Inspector 面板

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

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】一節。

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

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