【发布时间】:2013-08-01 17:40:14
【问题描述】:
不久前我发布了一个 Windows Phone 应用程序。从那时起,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(字符串文本) 在 GlobalEngine.Visual.TextBase.CalculateSpriteOrigin(对象发件人, EventArgs e) 在 System.EventHandler.Invoke(Object sender, EventArgs e) 在 GlobalEngine.Visual.TextBase.set_FormattedText(字符串值) GlobalEngine.Visual.TextLabel.set_Text(字符串值)在 FourWordsLibrary.GameUtils.Letter..ctor(Char letter, AssetManager 资产管理器,SpriteBatch spriteBatch,单一宽度)在 FourWordsLibrary.GameUtils.Word..ctor(String orderedWord, String shuffledWord、AssetManager 资产管理器、SpriteBatch spriteBatch、 InputManager inputManager, Single letterWidth) at FourWordsLibrary.GameUtils.Word..ctor(String orderedWord, String shuffledWord、AssetManager 资产管理器、SpriteBatch spriteBatch、 输入管理器输入管理器)在 FourWordsLibrary.Controllers.GameControl.StatePlay.SetupNextLevel() 在 FourWordsLibrary.Controllers.GameControl.StatePlay.Activate(对象 obj) 在 GlobalEngine.Base.StateManager
1.SetState(T state, Object obj) at GlobalEngine.Base.StateManager1.SetState(T state) 在 FourWordsLibrary.Controllers.GameControl.SetPack(PackManager packManager)在 FourWords.Screens.GameScreen..ctor(引擎引擎, 对象 obj)
我的应用程序是一个文字游戏,我从 XML 文件中检索每个级别的单词。所以我怀疑当 XmlReader 正在读取文件时,它使用了一种外国文化,这会导致检索到一个拉丁字母,然后当它尝试使用严格的英文 sprite-font 绘制字母时应用程序崩溃。 我尝试寻找一种方法来指示 XmlReader 使用 InvariantCulture 进行读取,类似于在 .toString() 方法中找到的方法,但没有找到任何方法。任何想法如何解决这个问题?
【问题讨论】:
-
我也有类似的问题,你有没有想过如何解决?
标签: c# xml windows-phone-7 exception xna