XNA 各國語言文字顯示!!

摘要:XNA 各國語言文字顯示!!

這篇感覺跟我之前的某篇有牴觸到...

之前某篇說,XNA只能作英文的遊戲,像中文、日文、德文那些根本不可能做到...

下午看到一篇文章,我才知道,是時尚中文遊戲、日文遊戲用XNA是可以實做出來的!!

只是用這種方法,代價非常的高~原因是因為,XNA的Content Pipeline會將SpriteFont中指定的文字範圍,轉換成圖片檔

這篇感覺跟我之前的某篇有牴觸到...

之前某篇說,XNA只能作英文的遊戲,像中文、日文、德文那些根本不可能做到...

下午看到一篇文章,我才知道,是時尚中文遊戲、日文遊戲用XNA是可以實做出來的!!

只是用這種方法,代價非常的高~原因是因為,XNA的Content Pipeline會將SpriteFont中指定的文字範圍,轉換成圖片檔

這樣可以在XBOX360跟PC上面做執行,而不用擔心字體的問題...

所以這一切的關鍵,就是在"SpriteFont中指定的文字範圍"!!

首先我們開啟一個新的XNA 2.0的專案,在Content中增加SpriteFont檔案...

決定好字型、字體、大小、風格以後,把檔案捲動到最後可以看到

<CharacterRegions>
<CharacterRegion>
        <Start>&#32;</Start>
        <End>&#126;</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