2016年3月22日 星期二

AssetGraph - 好用的AssetBundle打包工具

作者:Unity Japan
翻譯:Kelvin Lo


AssetGraph是一個用來針對AssetBundle打包的可視化工具。它的目的是用來建立一個架構在自訂規則下,閱讀容易的AssetBundle管理表。


Usage

1.Add Nodes

從Window裡可以呼叫出AssetGraph的視窗,在空白處按右鍵會列出一個你能新增的節點清單,你可以依照需求建立這些節點。建立一個Loader來當作根,它能蒐集Asset清單並帶到下一個節點,以供未來打包AssetBundle當作參考。

Loader節點裡面可以針對不同平台來做分類,代表你可以針對不同發佈平台來打包。指定一個存在的目錄到Load Path來讓系統知道你的Asset要從哪裡載入。

2.Connect Them

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


3.Configure Settings

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


4.Build It!

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



Why Rule Based?

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


Nodes tips

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

Loader

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



Filter

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




Importer

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



Grouping

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





Prefabricator

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



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清單 




BundleBuilder

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



Exporter

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


雖然AssetGraph是日本Unity所開發,但它目前只是一個插件,也無法再Asset Store上找到,所以你必須要到Github上去下載。https://github.com/unity3d-jp/AssetGraph

License
MIT

沒有留言:

張貼留言

關於我自己

我的相片
Unity台灣官方部落格 請上Facebook搜尋Unity Taiwan取得Unity中文的最新資訊