XNA輸出文字

摘要:XNA輸出文字

xna顯示文字的方式和畫圖差不多,呼叫
SpriteBatch.DrawString (SpriteFont, String, Vector2, Color) 
第一個參數是文字物件,第二個為要顯示的文字,第三個是顯示的位置。
 

其中較麻煩的是SpriteFont這個物件,較簡單的方式是在xna專案的content內,
新增SpriteFont檔案,他是一個XML檔案。
檔案最下面可以看到指定文字範圍的元素

    <CharacterRegions>
      <CharacterRegion>
        <Start>&#32;</Start>
        <End>&#126;</End>
      </CharacterRegion>
    </CharacterRegions>

其中 和~是16進位的UTF-8文字碼。若是你不知道號碼的話,也可以直接打文字。像是這樣:

    <CharacterRegions>
      <CharacterRegion>
        <Start>a</Start>
        <End>z</End>
      </CharacterRegion>
    </CharacterRegions>

不過這樣的話只能使用a到z而已。
這方法也可以產生中文,但是中文的UTD-8碼並不會將常用的字排在一起,
若是為了產生中文,而將所有中文字都排進去,大約兩萬多字,光是編譯就等到天荒地老了!!

所以這裡我們換個方式,只產生遊戲內有出現過的中文就可以了。
為此我們必須將遊戲內的文字都放在一起,再用另外的工具檢視遊戲文字檔,
取出每個不重複的字,直接產生一樣格式的SpriteFont檔案,
下面是我產生出的檔案的一部分:

<CharacterRegion><Start>有</Start><End>有</End></CharacterRegion>
<CharacterRegion><Start>問</Start><End>問</End></CharacterRegion>
<CharacterRegion><Start>最</Start><End>最</End></CharacterRegion>
<CharacterRegion><Start>攻</Start><End>攻</End></CharacterRegion>
<CharacterRegion><Start>會</Start><End>會</End></CharacterRegion>
<CharacterRegion><Start>七</Start><End>七</End></CharacterRegion>

看起來有點笨,但是這樣可以大幅縮減編譯的時間,是目前我找到顯示中文較方便的方法。