这是最近两天小弟微调LGame C#版时,新增的辅助工具,该程序可以通过
http://loon-simple.googlecode.com/svn/trunk下载最新的LGame-0.3.3-Beta包获得(位于C#子类,tools文件夹下),文件名【CharacterRegionTool(C#).exe】,不附带源码,不过也没有任何混淆,想看源码反向下也就是了(PS:此物乃标准.Net程序,没有.Net环境无法运行。当然,没有.Net环境者同样无法进行XNA开发……)。
需要说明的是,该工具对已发布的Java(Android)版,以及尚未发布的C/C++与HTML5版没有任何影响或帮助,仅用于自动生成XNA开发中【.spritefont】文件中的CharacterRegions元素,也就是生成xnb图像字体时所能编译出的具体中文字符(或其它特殊字符,阿拉伯语之类~)。
之所以会增加这样一个小工具,源于XNA的运行环境并非全部支持GDI+编程(并不是所有环境都能调用到System.Drawing这一命名空间)。因此,一旦我们希望程序可以在Windows、XBOX,WP7乃至Mono的扩展环境中同样运行游戏,我们就无法直接调取系统的TTF字体,来进行游戏开发所必需的文字显示。而只能选择使用XNA自带的SpriteFont文字贴图方式(或者其他类似的文字贴图方式,比如LGame自带的BMFont类)。
PS:不过,等LGame-0.3.3正式发布时,小弟会给C#版添加一个跨平台的TTF字体文件支持功能,注意,只是读取TTF文件,不能直接获得本地字库支持。
目前来说,SpriteFont在处理英文乃至欧洲其他国家文字时,不会有任何问题存在,因为字母是有穷的,只要我们设定好CharacterRegions中字母表的区间范围,一种英文字体,产生出一个至多1MB左右的xnb文件,就已足够。但是,在设定中文字体时,则随便导出一种汉字字体的完整支持,都将动辄产生出十几MB的xnb文件。而手动设定汉字字符又较耗时间,很难要求用户将长篇大论导分解成一个个<CharacterRegion>……</CharacterRegion>子元素。
这种现实情况,势必影响到WP7、XBOX开发者的使用积极性(至少会影响到简体,正体用户的C#版中文游戏开发吧……),所以小弟为LGame增加了下面这个小小的辅助工具(当然,就算不上LGame,需要.spritefont进行汉字支持的地方依旧可以使用。话说谁有空研究下用中文字根拼字造图啊,原理依照永字八法啥的~),用以自动生成整篇中文的具体CharacterRegions元素,多少缓解下XNA下中文开发难的囧态~
需要说明的是,该工具对已发布的Java(Android)版,以及尚未发布的C/C++与HTML5版没有任何影响或帮助,仅用于自动生成XNA开发中【.spritefont】文件中的CharacterRegions元素,也就是生成xnb图像字体时所能编译出的具体中文字符(或其它特殊字符,阿拉伯语之类~)。
之所以会增加这样一个小工具,源于XNA的运行环境并非全部支持GDI+编程(并不是所有环境都能调用到System.Drawing这一命名空间)。因此,一旦我们希望程序可以在Windows、XBOX,WP7乃至Mono的扩展环境中同样运行游戏,我们就无法直接调取系统的TTF字体,来进行游戏开发所必需的文字显示。而只能选择使用XNA自带的SpriteFont文字贴图方式(或者其他类似的文字贴图方式,比如LGame自带的BMFont类)。
PS:不过,等LGame-0.3.3正式发布时,小弟会给C#版添加一个跨平台的TTF字体文件支持功能,注意,只是读取TTF文件,不能直接获得本地字库支持。
目前来说,SpriteFont在处理英文乃至欧洲其他国家文字时,不会有任何问题存在,因为字母是有穷的,只要我们设定好CharacterRegions中字母表的区间范围,一种英文字体,产生出一个至多1MB左右的xnb文件,就已足够。但是,在设定中文字体时,则随便导出一种汉字字体的完整支持,都将动辄产生出十几MB的xnb文件。而手动设定汉字字符又较耗时间,很难要求用户将长篇大论导分解成一个个<CharacterRegion>……</CharacterRegion>子元素。
这种现实情况,势必影响到WP7、XBOX开发者的使用积极性(至少会影响到简体,正体用户的C#版中文游戏开发吧……),所以小弟为LGame增加了下面这个小小的辅助工具(当然,就算不上LGame,需要.spritefont进行汉字支持的地方依旧可以使用。话说谁有空研究下用中文字根拼字造图啊,原理依照永字八法啥的~),用以自动生成整篇中文的具体CharacterRegions元素,多少缓解下XNA下中文开发难的囧态~
运行示例图如下:
另外,不用担心字符重复,默认情况下已经剔除了重复元素:
_______________
另,明天有时间的话,小弟再整理点Java游戏源码发出来。