中文支持

不像javame绘制文字Graphics.drawString那么简单,多平台的游戏框架一般采用生成BitampFont的方案。libgdx的字体支持方案BitmapFont是一个字符对应一个图片,根据要显示的字符串把字符图片拼起来。英文26个字母组合能解决所有表达,每个字母重用性很大,所以这种方案就显得非常灵活。但像中文这样的象形文字,一个字重用性不大,应用到中文BitmapFont的这种方案就有点别扭,倒不如自己ps张图片直接显示。不过还是建议使用BitmapFont,因为用hiero来生成规范点,还有数字和标点符号的生成还是得依赖它。

如果游戏用的中文字数较少,用hiero生成文件后游戏加载就行了。但当中文数合计有1000个那么多,而且不是一起显示的,那这样做就很不可取了,不仅文件大,而且加载后占内存大,这种情况可以尝试动态加载,这需要引入FreeType库,然后增加一个字体库作为游戏资源(虽然中文字体库文件也不小),然后在需要的时候生成相应的字符串就行了。(FreeType原理也是依赖BitmapFont,相当于在游戏中开个hiero任务根据字体库生成BitmapFont)。网上也有其他字体支持的方案,例如smartFont。

如果你想基于BitmapFont在游戏中做个聊天室的东西,那有点难度。不过可以引入其他的框架。在android中libgdx游戏其实是个view,你可以在一个linear layout中嵌入它,再嵌入一个textview和edittext,让android原生来显示中文也是种方法。

题外话,有时候使用BitmapFont缩小字体时会模糊,可以尝试这样解决(这个方法转载自点击打开链接):

之前用libgdx做游戏就发现,有些文字显示效果就是不好。经过研究,共有一下几个问题和相应的解决办法:
1. 做的字库边缘会有其他字的像素点:这是由于Hiero做的字是一个整图片,用的时候是在里面切出来一个字的图片,但是当字过于密集,就会造成切到其它字的边缘了。所以这里做字库的时候padding加一个像素就够了。如果觉得字间距太大,可以调整fnt文件的xadvance值。
2. 做的字库在电脑上看清楚,手机上不清楚:这是由于手机分辨率有很多种,所以会对字进行缩放。其实就算是和电脑上一样的分辨率,在手机上其实也不清楚。这是因为默认是用nearest算法,这里改成linear就好了。如:bitmapFont.getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
3. 用了Linear算法,有的字清楚,有的不清楚:这就是一直困扰我的问题,最后才发现,还是由于画面显示的像素问题,字所在的坐标必须是整数,这样不论是nearest还是Linear都会是最佳显示效果。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值