游戏UI设计与分析1

本文探讨了游戏UI设计中CEGUI的使用,包括中文解决方案、潜在问题及其原因。作者指出CEGUI的灵活性导致了易误用的接口设计,同时分析了CEGUI的缓存机制、动画支持和消息派发的效率问题。文章强调了在商业项目中使用CEGUI需权衡利弊,并预告了下篇将讨论UI窗口层次结构设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

被某人数次各应之后,我决定先写点东西让他鄙视我,这样能少被各应点。

第一篇我打算说说我最近的心得,关于游戏UI设计上一些问题的权衡,以及对CEGUI源代码以及设计思路的相似剖析。这次就先说说CEGUI吧。

 

现在国内很多游戏都在用它,很多开源项目也推荐用它,它足够的火,也足够的优秀,我非常的感谢crazy edit写出如此优秀的通用的游戏UI库,并且开源给我们这些广大的菜鸟学习。开始之前,先说说网上传来传去的中文解决方案,以及我发现的几个埋藏比较深的小问题。

1,中文解决方案:

CEGUI字符串内部使用32位unsigned int,所以设计上是支持中文的,但是为什么使用中文会出错呢?网上很多在讲用win32 api转换格式编码,其实这个没有解决问题的本质,我遇到过人不断的质疑我为什么没有解决,我用的好好的啊,恩,那我只能说,你一定没有通过过lua脚本处理中文字符串。对滴~错误本质最明显的就体现在了这里。lua脚本文件虽然使用utf8编码,可以支持中文,但是,lua和c的接口,已经将utf8编码转换成了ansi,而cegui的string的c_str输出的是utf8的编码,所以,一定会出错,解决方案也so easy,修改下c_str,然后替换下lua脚本头文件中的宏,就ok了。第二个中文问题,中文输入,只要在inject char时候进行ime判断,就ok了。

2,小问题:

第一个是cegui的文字编码map,这里在与xml时候交换数据时候,使用uint强制转换了int,所以如果文字编码大于0x7FFFFFFF,就会出错。

第二个是我在优化渲染效率时候遇到的,cegui中有部分控件的z layer没有设置,完全依赖于components draw的先后顺序,虽然运行不会出错,但是也算个小问题吧。

 

那现在就说说我对CEGUI的看法和一些问题的分析,cegui很灵活,非常灵活,太灵活。所以对于出用cegui的人来说,经常会遇到一些莫名的问题,其实对cegui理解深了,这些就不是问题了,但是如果作为一个类库,它暴露了一个问题,接口设计容易被误用,这是不合理滴。那作为一个这么NB的程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值