Unity官方出的視覺化編輯器在這次挑戰中介紹過Asset Graph(AG)、Shader Graph(SG)、Visual Effect Graph(VEG)和DOTS編輯器。而原先存在已久的Animator編輯器,網路上這五年來有很多的介紹,故沒有放進來。而官方另一個和動畫製作相關的編輯器-Playable Graph,一直不太了解它的概念是什麼,也沒有打算加入到介紹中。但不論是Animator編輯器或是Playable Graph,官方都有其實騟性質的函式庫,讓開發者可自行使用,提供了和xNode概今上相當的可能性。
比方說從Asset Store的ICode擴充介紹就可以看到Animator的身影,這套還在販售中的ICode,它是狀態機擴充的一個選擇,之前已介紹了Bolt的State Graph就不再花時間介紹該擴充。
撇開Asset Graph這套原先由Unity日本團隊早幾年開發的編輯器,眼尖的開發者不知有沒有發現SG、VEG和DOTS編輯器很像孿生兄弟,不論是節點、線、配色相似度都很高,若是縮小到一個比例的截圖可能都查覺不出哪個是哪個。
其實仔細看,還是存在著相當的差異性。不過客觀的去想,這三套官方開發的視覺化編輯器,底層應該是通用某些函式庫或是相同的機制。今天會簡短介紹此部份,這個機制就是共同建構在UIElements上的延伸。
UIElements除了在官方自家的Blog有介紹外,說實在的在其它Unity開發者的文章中,被提及的力度很低,在已經不是Preview的產物下,研究的人很少,反應出它現階段不受開發者的青睞。那UIElements到底是什麼呢?
還記得在介紹Odin Inspector時有特地提到很久之前Editor端和遊戲端共用一套GUI機制,而隨著UGUI出現後遊戲端就以UGUI為主。隨著XAML和網頁端CSS排版的方式深受視覺設計師的推祟後,Unity似乎看到了這樣進行UI設計的方式也適合遊戲開發的生態。畢竟也存在了這些UI的方案,先行開拓其可能性。
而UIElements,簡單的來說,就是Unity推出的CSS + XML方案,但不知道為什麼利用標準總是突顯不出它的特殊,所以命名成USS + UXML(還記得Unity Script?一個Unity自行調整過後的JavaScript)。而UIElements就是利用CSS排版配合XML的元件定義所制定出的UI方案,而此方案同時適用Editor端和遊戲端,但在現階段只有Editor端可用。
而前面提到的SG、VEG和DOTS編輯器,就是建立在UIElements之上的產物,但UIElements本身也就只提供了CSS和XML的概念,一定中間還有一層函式庫進行實際節點也好、配色也好方面的聚合。
而在好奇心的趨駛下,就在GitHub上看到了這個專案。而它裡面的圖和節點呈現,看起來和官方設計的如出一轍。
也才花時間研究了xNode,對於NodeGraphProcessor(NGP)的理解就暫時擱置。本身是認為NGP更現代、更適合日後整合置Unity中使用,但此專案的開發進展、文件、整合度等,都是要進行評估的。今天就先利用這裡記錄下來,後續再進行研究。
UIElements用於遊戲是指日可待,現今相關的教學不算太多,且主要是用於Editor端,對於想要省時間的情況下用Odin Inspector更為適合。且不論是Odin Inspector或是Doozy,也都可以看到其Roadmap規劃裡會逐步靠近UIElements的使用。
若專案中有即時性的需求要利用UIElements,也可以參考NGP專案的程式碼,應該相當的有幫助。今天就UIElements的淺談就到此告一段落。