准备静静心,先从UI开始。

来源:互联网 发布:网络歌手招聘信息 编辑:程序博客网 时间:2024/04/30 07:00

一直以来对UI的感觉就是一个拼量的东西,好和坏的唯一区别体现在编辑器强大与否上。

后来,看了WPF后,才感觉对UI根本就从来没有明白过。

并不仅仅只是那个数据绑定,而是整套结构,原来还可以这么来。

最近想做的东西很多很多,但是却越来越难耐下心去做好一个单独的模块,Sigh!

前段时间又搞了搞UI这块儿,数据绑定什么的,开了个头,就有了后面的一些新的想法。

发现UI其实就是一个微缩的游戏世界,基本上你能在游戏系统中找到的东西,UI中全都有。

所以,接下来,准备静静心从UI开始,一个模块一个模块慢慢去搞。

网上有很多UI开源库,但还是准备自己做一个,主要的原因是这些UI库中,要么是CEGUI这样庞大、昂贵而缓慢的,要么就是还不完善的,工业化使用的Scaleform、Vertrix又感觉已经形成了固定的模式,继续做下去没什么意思。做这个主要还是为了练手,省得手越来越生,而且觉得像WPF这样组织的UI库,可能孤陋寡闻没有见到,而且到目前为止也没听到人们分享和讨论,感觉还是太小众。

其实想来,很多人不做UI,主要就是UI投入大而产出小,像CEGUI这样的,庞大的代码量取得的效果还不一定好,有这时间不如去折腾点算法什么的,比如搞个Deferred Shading,事半功倍一下。所以这次也准备改变个思路,让整个UI系统变得灵活,不再大投入小产出,不往大处做。

就跟WPF一样,你看看WPF真正的核心才多少行代码。


初步的想法,不太成熟:

基就不说了,有那么几个基要搞,谁都回去搞的基——持久化基、RTTI基或者Reflection基、Garbage Collection基、IUnknown基。

具体的组织上,准备采用Game Engine Gems 1上那个思路,把Visual和Element分开,Visual只负责显示,Element负责作为UI系统的中坚。但不准备用GEG那篇文章的思路,基于接口看起来强大,真正做起来却不好进行控制。

Element主要解决UI布局系统的问题,跟WPF学、一个Element可以放到不同的Panel中去安排布局,布局安排完毕后,Element的位置将直接影响到Visual中,Visual本身不带任何布局等等概念。而除了布局之外,诸如表现性相关的,纹理、颜色之类的东西,就使用数据绑定来处理。

因为整套系统会基于Reflection,所以Layout什么的只要做成配置就行。

支持Data Template,这样扩展性就近乎于无垠了。

3D UI也可以使用类似WPF的方案,做专门的2D转3D和3D转2D的Element和Visual。

一开始可以先不管工具,先做成像Xaml那样的格式即可。

原创粉丝点击