AssetGraph - 好用的AssetBundle打包工具

时间:2022-02-14 18:42:23

原文地址:AssetGraph - 好用的AssetBundle打包工具

作者:Unity Japan

翻譯:Kelvin Lo


AssetGraph是一個用來針對AssetBundle打包的可視化工具。它的目的是用來建立一個架構在自訂規則下,閱讀容易的AssetBundle管理表。
<此处有视频,在youtube上,自行查阅吧>

Usage 

1.Add Nodes

從Window裡可以呼叫出AssetGraph的視窗,在空白處按右鍵會列出一個你能新增的節點清單,你可以依照需求建立這些節點。建立一個Loader來當作根,它能蒐集Asset清單並帶到下一個節點,以供未來打包AssetBundle當作參考。
AssetGraph - 好用的AssetBundle打包工具
Loader節點裡面可以針對不同平台來做分類,代表你可以針對不同發佈平台來打包。指定一個存在的目錄到Load Path來讓系統知道你的Asset要從哪裡載入。

2.Connect Them

當你建立更多的節點後,只要點一下連結點並拖出一條線,你就可以連結他們彼此。點擊這些線AssetGraph會顯示哪些Asset會通過這些管線。
AssetGraph - 好用的AssetBundle打包工具

3.Configure Settings

選擇任何種類的節點,你就可以在Inspector視窗看到它的設定選項,透過這些選項你可以自訂你的打包規則,例如,Filter節點可以用來設定過濾規則,Importer節點可以設定不同的匯入方法。
AssetGraph - 好用的AssetBundle打包工具

4.Build It!

最後只要按一下AssetGraph視窗上方的Build按鈕就可以打包了。這工具讓美術或是企劃用更直覺的方式來設計包裝。
AssetGraph - 好用的AssetBundle打包工具
AssetGraph - 好用的AssetBundle打包工具
AssetGraph - 好用的AssetBundle打包工具
Why Rule Based? 

因為透過規則化的AssetGraph 來處理 AssetBundle 打包流程,程式設計師和美術與企劃就能用更相同的語言來安全的打包,一旦設定好之後當有新的Asset放入目錄,AssetGraph就會自動的將他們納入需要的打包規則中。


Nodes tips 

AssetGraph提供幾種不同功能的節點類型,接下來我們會一一介紹。

Loader

Loader會搜尋要打包的Asset並納入它們, 預設的目錄會在專案的根目錄(全專案搜尋),你也可以指定一個存在的目錄給它。 
IN: 沒有 
OUT: 指定目錄下所有的Asset清單 
AssetGraph - 好用的AssetBundle打包工具


Filter

Filter會透過Asset的名字和關鍵字配對來過濾前一個節點傳過來的Asset,你可以在同一個Filter建立複數的規則來達成多重過濾。 
IN:Asset清單 
OUT:過濾配對之後的Asset清單 

AssetGraph - 好用的AssetBundle打包工具


Importer

Importer用來改寫由前一個節點傳來Asset的匯入設定(import setting) (註:原Asset設定還是存在的) 
IN: Asset清單 
OUT: 修改過importer setting後的Asset清單 
AssetGraph - 好用的AssetBundle打包工具


Grouping

Group 用來將不同的資源清單透過關鍵字指定群組,例如:將經過分類並調整過Import Setting之後的Asset清單群組起來。Group用在打包AssetBundle非常有用,也允許在keyword欄位裡面輸入*號當作是通用字。(例如:Asset*) 
IN: Asset清單 
OUT: 群組化的Asset清單 
AssetGraph - 好用的AssetBundle打包工具
AssetGraph - 好用的AssetBundle打包工具
AssetGraph - 好用的AssetBundle打包工具


Prefabricator

Prefabricator可以讓你在遊戲內依據你需要的格式產生Prefab. 你可以在透過修改AssetGraph.PrefabricatorBase腳本來製作你自己的Prefab。 
IN: 群組化的Asset清單 
OUT: 產生Prefab之後的群組Asset清單 
AssetGraph - 好用的AssetBundle打包工具


Prefabricator code example:

public class CreateCharaPrefab : AssetGraph.PrefabricatorBase {    public override void In (string groupKey, List<AssetGraph.AssetInfo> source, string recommendedPrefabOutputDir) {
/*
create character's prefab.

1.texture & material -> set texture to the material of model.
2.model -> instantiate, then set material to model.
3.new prefab -> prefabricate model to new prefab.
4.delete model instance from hierarchy.
*/

~~~ DO SOMETHING ~~~

// export prefab data.
PrefabUtility.ReplacePrefab(modelObj, prefabFile);

}
}

這裡可以找到完整的範例。
Bundlizer

Bundlizer 用來建立指定好名稱後的 "bundle". 如果有用 "*" 的檔名,會同步採用群組的 “*” 設定。 
IN: 群組後的Asset清單 
OUT: Bundle清單 

AssetGraph - 好用的AssetBundle打包工具


BundleBuilder

BundleBuilder會處理所有傳入的規則後建立 AssetBundle 檔案,透過Bundlizer和不同的BundleBuilder,你可以同時建立不同的設定的AssetBundle (例如:壓縮或沒壓縮的) 
IN: Bundle清單 
OUT: 產生的AssetBundle檔案清單 
AssetGraph - 好用的AssetBundle打包工具


Exporter

Exporter將上述完成步驟的內容輸出存到目錄,你也可以改變匯出的目錄位置。 
IN: Asset清單或AssetBundle檔案清單 
AssetGraph - 好用的AssetBundle打包工具

雖然AssetGraph是日本Unity所開發,但它目前只是一個插件,也無法再Asset Store上找到,所以你必須要到Github上去拉下來,如果對Github操作不熟,也可以下載我們提供的安裝包(不再更新)。
Download Link:
https://github.com/unity3d-jp/AssetGraph