我很懒,在想不明白所有的问题前我总是懒得动手,当我想明白的时候又会遇到新的问题。这也是为什么这么长时间了,我一个游戏也写不出来的原因。
还记得几个月前写过一个很垃圾的UI,垃圾的不行了。这几天又看了几篇讲解UI编程的文章,收获不小,特来总结一番。
首先,我原先的部分思路还是不错的。(先肯定自己一下)比如,UI都是画出来的(废话,所有的图形界面都是画出来的),我们要把从系统接收到的消息传递给UI系统,渲染的时候UI是最后渲染的等等。
今天要总结一下UI是怎么跟主程序交互的。
在我上次那个程序中是直接PostMessage到系统消息队列里的,如果是想实现一个资源编辑器来取代VC6里面那个的话,思路也算正确。但是在看过大家的方法之后,我不得不承认这个方法对于游戏来说是不合适的。
要让UI跟主程序交互的方法还是不少的,但是对UI使用者来说简单方便的却不多,比较常见的方法有MFC使用的消息映射+消息循环,还有就是 delphi等RAD中使用的事件回调。HoHo5的UI部分采用类似MFC的方法,而CEGUI则使用类似delphi的事件回调。
无论是哪种方法,只要是使用的方便,那么对于设计者来说就一定不会轻松。
《DirectX9 User Interfaces Design and Implementation》一书中采用的是类似MFC的函数重载,总共出现的事件也不过 OnRender();OnMouseDown();OnMouseMove();OnMouseUp();OnSetFocus();OnLostFocus();OnKeyDown();OnKeyUp();8 种,但对付一般的应用足够了。
到底该用什么方法来实现我的UI呢?唉。。