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


Demo下載