摘要:XNA 各國語言文字顯示!!
這篇感覺跟我之前的某篇有牴觸到...
之前某篇說,XNA只能作英文的遊戲,像中文、日文、德文那些根本不可能做到...
下午看到一篇文章,我才知道,是時尚中文遊戲、日文遊戲用XNA是可以實做出來的!!
只是用這種方法,代價非常的高~原因是因為,XNA的Content Pipeline會將SpriteFont中指定的文字範圍,轉換成圖片檔
這篇感覺跟我之前的某篇有牴觸到...
之前某篇說,XNA只能作英文的遊戲,像中文、日文、德文那些根本不可能做到...
下午看到一篇文章,我才知道,是時尚中文遊戲、日文遊戲用XNA是可以實做出來的!!
只是用這種方法,代價非常的高~原因是因為,XNA的Content Pipeline會將SpriteFont中指定的文字範圍,轉換成圖片檔
這樣可以在XBOX360跟PC上面做執行,而不用擔心字體的問題...
所以這一切的關鍵,就是在"SpriteFont中指定的文字範圍"!!
首先我們開啟一個新的XNA 2.0的專案,在Content中增加SpriteFont檔案...
決定好字型、字體、大小、風格以後,把檔案捲動到最後可以看到
<CharacterRegions>
<CharacterRegion>
<Start> </Start>
<End>~</End>
</CharacterRegion>
</CharacterRegions>
上面的32-126就是英文字、數字等,這些是預設的範圍,所以才會說XNA只能做英文遊戲...
這邊數字範圍是UTF-8的十進位數值
所以這邊我就做了一些修改...
中文字起始範圍是0x4E00-0x9FFF
這邊要提醒一下,雖然這些差距才兩萬多個中文字...
不過我用雙核心1.6跑,目前編譯到第五個小時都還沒有編譯完成...
不過可以用字定範圍的方式來決定,中文字的範圍,不要全部都製圖...
一方面檔案會很大、一方面編譯時間會很久
上述都設定完成以後,就可以到專案中可以在顯示的地方用文字囉
string text = "中文字測試";
spriteBatch.Begin();
spriteBatch.DrawString(spriteFont,text,new Vector(0,0),Color.Red);
spriteBatch.End();
以上做法還沒有移動到XBOX360上面...因為目前手頭沒有機器...
不過應該是可以在XBOX360上面顯示!!
UTF8查詢 : http://www.utf8-chartable.de/unicode-utf8-table.pl