這是最近兩天小弟自制的輔助工具,可以通過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游戲源碼發出來。
浙公網安備 33010602011771號