之前項目中需要一個樹狀的多級菜單,Unity Asset Store里也有些現成的插件,但是在將其修改成與項目中一致的風格比較難,於是就參考了一下成熟的插件,自己實現了一個樹狀菜單功能,這樣就可以使用自己的UI風格。
Unity的UGUI雖然使用簡單了,但是還是存在不少的Bug,如果按照常規的思路,把子節點設置為父節點的子物體,然后動態計算父節點的大小從而計算總的大小,Unity有現成的的ContentSizeFilter可以計算總的大小,但是嵌套使用進行布局的話出現布局錯亂的問題。
這個多級菜單實現的思路比較簡單,就是一個簡單的樹狀結構的深度優先遍歷,然后將其設置為ScrollView下同級的對象,父子節點的關系則由代碼進行維護,展開收起則直接進行SetActive操作,實際使用的效果還是可以的。
主要由兩個腳本組成:TreeViewNodeManager和TreeViewNode。
實現的效果圖如下所示:
示例的工程基於Unity5.5.2f,github地址為:
https://github.com/vbtang/TreeViewDemo.git