Posted on 2012-07-18 12:55
劍孤寒 閱讀(977)
評論(0) 編輯 收藏 引用 所屬分類:
游戲編程
此次修改對整個GUI系統進行了重新設計,重寫了大部分代碼,同時,GUI編輯器也做了相應修改,因為GUI整個結構都發生了很大的變化,所以GUI編輯器的修改幾乎相當于重寫了。
GUI系統主要的修改是增加了很多如tooltip、模態對話框等功能的支持,文字和貼圖的顯示,消息傳遞等功能做了整合,使之更容易擴展,以前做一個簡單的界面都要繼承N個控件,現在只需要將所有代碼丟到主窗口即可,而且由于重新設計的GUI框架,使得一切操作都很簡單自然,不用像以前一樣要寫N多復雜的代碼才能實現一個簡單的功能。不過由于時間關系,還有很多NB的功能沒有加進來,不過現在的GUI框架要加新功能都很簡單,例如動態換膚功能,只要發一個消息讓所有控件把自己的RenderState換掉即可,還有像窗口裁剪功能,只需要在OnRender里設一下剪裁區域即可。
GUI編輯器在原有編輯器基礎上新增了皮膚編輯功能,并對控件創建等細節做了很多優化,使之更容易使用,另外還增加了一個重載資源功能,可以同時編輯GUI紋理和GUI界面,不用因為GUI紋理改了,而要重新打開整個工程。在GUI列表的設計上之前想了兩種方案,一種是基于引擎GUI父子控件結構的GUI列表,另一種是所見即所得的GUI列表,前者的好處是可以進行GUI預覽,壞處是不能隨便調整控件結構,而后一種方案好處是控件結構可以亂調,甚至可以直接把這個窗口下的所有控件直接拖到另一個窗口,壞處自然是不好做GUI預覽了,這個想了很久,最終還是選擇了后一種方案,因為在編輯GUI時控件結構可能是會經常變的,后一種結構顯然更適合于編輯,至于預覽采用了一個折衷的方式,可以單獨預覽某個控件的某個狀態是怎樣顯示的。不過也是由于時間關系,還有很多便于操作的功能沒有加進來,例如Redo/Undo功能,這個以后如果有時間再說吧。
------------------------華麗的風格線----------------------
以下是開發中截圖&Demo:


Demo下載