Unity開發筆記-Editor擴展用GraphView實現邏輯表達式(0)簡介


節點系統簡介

基於Graph的節點編輯器是非常強大的,而且Graph(圖)是重要的數據結構之一,很多實際的問題的算法和解決方案都需要用圖和其中的節點(Node)來實現。
舉幾個例子:Unity中我們所知的ShaderGraph,AssetGraph都是基於Graph的節點編輯器,而Bolt也為我們提供了可視化編程解決方案類似於UE中的藍圖。
游戲業務邏輯中的行為樹,帶有分支的對話系統,技能編輯器,都可以用Graphview實現。作為邏輯程序員,這些是我們最有可能利用Graphview自己動手實現的功能。
另外狀態機也可以使用節點系統進行可視化,狀態機中的某個狀態可以看作是一個節點,完全可以使用GraphView實現另一個PlayMaker。

GraphView為我們提供了什么

GraphView為我們提供了一整套節點系統的UI解決方案,它本身是由UIElement實現的。Graph,Node,Port,Edge,這些復雜的UI和交互已經為我們實現了,我們可以通過擴展Node實現我們自己的節點編輯功能

GraphView沒有提供什么

不幸的是,除了UI以外,GraphView並沒有提供其他功能比如:

1.編輯后的數據序列化,我們需要自己實現編輯器可視化數據的保存功能
2.運行時的Graph行為。GraphView中的node和node之間的關系,運行起來到底代表什么,能做什么,需要我們自己實現。舉個例子:劇情對話功能是我們想要實現的運行時功能,而Graphview對此一無所知。

避免重復造輪子,其他現成的節點方案,xNode和bolt

知道了這些,我們可以想象到,從0實現一個節點系統還是有不少的工作量。
如果想要更完整的方案,可以先參考下開源的xNode,他實現了GraphView幾乎相同的UI功能,使用傳統GUI,所以向下兼容到Unity5,而GraphView至少需要2019。
同時xNode提供了數據序列化功能,和運行時的Graph基類。
如果還不滿足,想要更多集成的功能,可以看看bolt。bolt相當於UE中的藍圖。我對bolt還沒有太多研究,感興趣的各位可以查看其他資料。

下面我們正式來實現一個Graphview的表達式功能系統。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM