我不久前发布了一款Windows手机应用程序。从那以后,BugSense报告了一个导致国外崩溃的问题:
System.ArgumentException - 字符'İ'(0x0130)不可用 在这个SpriteFont中。如果适用,请调整字体的开头和结尾 CharacterRegions包含此角色。参数名称:字符
这是堆栈跟踪:
在 Microsoft.Xna.Framework.Graphics.SpriteFont.GetIndexForCharacter(CHAR 性格) Microsoft.Xna.Framework.Graphics.SpriteFont.InternalMeasure(StringProxy&安培; 文字) Microsoft.Xna.Framework.Graphics.SpriteFont.MeasureString(String text) at GlobalEngine.Visual.TextBase.CalculateSpriteOrigin(Object sender, EventArgs e)在System.EventHandler.Invoke(Object sender,EventArgs e) at GlobalEngine.Visual.TextBase.set_FormattedText(String value)at GlobalEngine.Visual.TextLabel.set_Text(String value)at FourWordsLibrary.GameUtils.Letter..ctor(Char letter,AssetManager assetManager,SpriteBatch spriteBatch,Single width)at FourWordsLibrary.GameUtils.Word..ctor(String orderedWord,String shuffledWord,AssetManager assetManager,SpriteBatch spriteBatch, InputManager inputManager,Single letterWidth)at FourWordsLibrary.GameUtils.Word..ctor(String orderedWord,String shuffledWord,AssetManager assetManager,SpriteBatch spriteBatch, InputManager inputManager)at FourWordsLibrary.Controllers.GameControl.StatePlay.SetupNextLevel()at FourWordsLibrary.Controllers.GameControl.StatePlay.Activate(对象 obj)at GlobalEngine.Base.StateManager
1.SetState(T state, Object obj) at GlobalEngine.Base.StateManager
1.SetState(T state)at FourWordsLibrary.Controllers.GameControl.SetPack(PackManager packManager)在FourWords.Screens.GameScreen..ctor(引擎引擎, 对象obj)
我的应用程序是文字游戏,我从XML文件中检索每个级别的单词。所以我怀疑,当XmlReader正在读取文件时,它会使用外来文化,这会导致检索拉丁字母,然后当应用程序尝试使用严格的英文精灵字体绘制字母时崩溃。 我试图寻找一种方法来指示XmlReader使用InvariantCulture进行读取,类似于.toString()方法中的方法,但是没有找到任何方法。任何想法如何解决这个问题?
答案 0 :(得分:0)
对我来说似乎更多是输入XML文件问题。检查它是否包含此“无效”字符('İ'(0x0130))并在必要时进行更正。如果您使用app / game编写输入XML,请检查您是否使用InvariantCulture编写内容。
BR,