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


Demo下載