XNA-利用Content Pipeline輸出多國語言
在XNA Creators Club Online裡有一個多國語言輸出的範例Localization。
他就是自己寫一個Content Processor來做到這件事。
之前對於輸出文字的部份有提到SpriteFont,他預設的Content Processor是Sprite Font Description - XNA Framework,而spritefont檔是一個xml檔。
對於前一篇XNA-Content Pipeline有了解的人應該會知道這個xml檔會由預設的Importer(XmlImporter)讀入轉成FontDescription,
再由FontDescriptionProcessor轉成SpriteFontContent。
而此範例的Process函式除了解析xml後去載入所有的資源檔(Resx)外,最重要的就是資源檔的所有字加到FontDescription的Characters裡
片段程式碼如下:
foreach (XmlNode xmlNode in xmlDocument.SelectNodes("root/data/value"))
{
string resourceString = xmlNode.InnerText;
// Scan each character of the string.
foreach (char usedCharacter in resourceString)
{
input.Characters.Add(usedCharacter);
}
}
其實資源檔也是一個xml格式的檔案,讀出裡面的文字後將他一一加入input.Characters。
加入之後,真正轉換成SpriteFontContent的功能也只是交給預設的context.Convert去做,所以其實概念是很簡單的。