天天看點

unity 批量導入模型工具_Unity手遊實戰:從0開始SLG——世界地圖篇(四)SuperTiled2Unity...

在前面的章節我們有提到,Unity的TiledMap功能是在2017.2版本首次規劃,并且在2018版本進行完善的。而Tiled2Unity是作者在5年前制作的,是以實作和性能上自然是沒有充分利用新版Unity的特性。其性能和功能還原程度也是有所欠缺。并且作者對這個版本也放棄維護了。

unity 批量導入模型工具_Unity手遊實戰:從0開始SLG——世界地圖篇(四)SuperTiled2Unity...

1 SuperTiled2Unity

SuperTiled2Unity是Tiled2Unity的更新版本,最低支援的Unity版本是2018。SuperTiled2Unity依賴了新版的2個重要特性,一是趨于完善的TiledMap機制,能夠對标Tiled的相關功能。二是2017版本開始支援的,比較重要的特性更新叫Scripted Importers。相關的介紹我們放在下一個小節。

SuperTiled2Unity利用腳本導入器監聽資源格式,一旦tmx類型的資源進入到Assets目錄,即可觸發指定的監控函數,完成資源處理和轉換,将tmx的格式轉譯為Unity的TiledMap格式。當然因為這是自定義的接口,是以你可以在代碼裡做任何你想要的修改,非常的友善。

SuperTiled2Unity作者仍然在維護。https://seanba.com/donate

unity 批量導入模型工具_Unity手遊實戰:從0開始SLG——世界地圖篇(四)SuperTiled2Unity...

2 腳本導入器

腳本導入器是SuperTiled2Unity用來将tmx(實際上是一個xml格式)格式轉化為UnityTiledMap格式的工具。相比于Unity的Eidtor類型的API而言,它能自動監控資源類型,并觸發指定的API來完成資源處理。相較于傳統的菜單需要點選觸發具有比較大的優勢,至少它會解決開發人員從源碼伺服器上拉取最新資源代碼之後,忘記更新而帶來的各種問題。

當然除了轉化Tmx之外,其實我們工程裡還做了非常多的類似資源監測的工具,以便檢查各種美術資源規範,同時還可以做成各種掃描工具,用以批量檢查和處理資源。

既然已經提到了它,那麼就順便再擴充介紹一下它。

2.1 Scripted Importer

前面的文章裡其實有介紹過Unity的資産管線,也就是說Unity對一些原生支援的資源類型,諸如fbx,紋理、材質等資源有監控行為,一旦這些資源進入到Unity工程目錄,就會觸發Unity對資源的檢測和處理。但以前的缺陷是這些處理都是随着Unity版本内置的,也就是說沒有辦法擴充支援其他的資源類型。

而Scripted Importers就是擴充了這個機制,讓開發者可以自定義監聽指定資源類型,自定義擴充資産管線的處理機制。不過需要注意的是,為了安全起見,Unity不允許自定義處理它已經原生支援的資源類型。

舉個例子,我們把一個字尾名為cube的檔案導入Unity,利用擴充的資産管線将其轉化為一個Prefab,并給它添加一個材質和Shader。

unity 批量導入模型工具_Unity手遊實戰:從0開始SLG——世界地圖篇(四)SuperTiled2Unity...

注意幾個地方:

  • 通過在類的上方放置ScriptedImporter 屬性來注冊成為Untiy的擴充資産管線。
  • CubeImporter 繼承自虛基類ScriptedImporter
  • OnImportAsset 的ctx參數包含了導入和導出資料。
  • 每一個導入事件,必須也隻能進行一次SetMainAsset調用
  • 每一個導入事件,可以根據需求生成多個AddSubAsset 調用

2.2 ScriptedImporterEditor

當然除了資源的自定導入之外,也可以自定資源的顯示。比如:

unity 批量導入模型工具_Unity手遊實戰:從0開始SLG——世界地圖篇(四)SuperTiled2Unity...

Unity Editor下的GUI相關的内容就不展開了,其實就是決定某個資源如何在inspector下進行顯示。

2.3 使用Scripted Importer

當你給你工程添加了一個Scripted Importer之後,你就可以像使用其他原生資源一樣使用Unity相關支援,比如:

  • 會把被支援的資源顯示在Asset目錄的層次結構中
  • 重新啟動編輯器的時候,會和其他原生資源類型一樣,檢查是否有新的更新或者更新
  • 在磁盤上編輯了資産檔案,再回到Unity會觸發資源重導入。
  • 可以使用Asset->Import New Asset… 來建立新資源
  • 可以被Asset -> Reimport 觸發
  • 點選某個資産,可以在Inspector視窗檢視相關屬性,如果修改了某些設定會觸發視窗的Apply按鈕。
unity 批量導入模型工具_Unity手遊實戰:從0開始SLG——世界地圖篇(四)SuperTiled2Unity...

3 結尾

本節大概介紹了SuperTiled2Unity所依賴的重要特性,第一個在本系列第一節已經介紹過了。由于SuperTiled2Unity的相關資料不多,并且也是我們目前所采用的工具,是以接下去幾章我會先介紹下它的大緻用法。

Git位址:https://github.com/Seanba/SuperTiled2Unity

Scripted Importers 腳本導入器:https://docs.unity3d.com/Manual/ScriptedImporters.html