しばらく前に Windows Phone アプリをリリースしました。それ以来、BugSense は、外国でいくつかのクラッシュを引き起こしている問題を報告しました。
System.ArgumentException - 文字 'İ' (0x0130) は、この SpriteFont では使用できません。該当する場合は、フォントの start と end 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(オブジェクト送信者、EventArgs e) で GlobalEngine.Visual.TextBase.set_FormattedText(文字列値) で GlobalEngine.Visual.TextLabel.set_Text(文字列値) でFourWordsLibrary.GameUtils.Letter..ctor(Char 文字、AssetManager assetManager、SpriteBatch spriteBatch、Single width) で FourWordsLibrary.GameUtils.Word..ctor(String orderWord、String shuffledWord、AssetManager assetManager、SpriteBatch spriteBatch、InputManager inputManager、Single letterWidth)フォーワーズライブラリーで。GameUtils.Word..ctor(String orderWord, String shuffledWord, AssetManager assetManager, SpriteBatch spriteBatch, InputManager inputManager) で FourWordsLibrary.Controllers.GameControl.StatePlay.SetupNextLevel() で FourWordsLibrary.Controllers.GameControl.StatePlay.Activate(Object obj) で GlobalEngine .Base.StateManager
1.SetState(T state, Object obj) at GlobalEngine.Base.StateManager
1.FourWordsLibrary.Controllers.GameControl.SetPack(PackManager packManager) での SetState(T 状態) FourWords.Screens.GameScreen..ctor(エンジン エンジン、オブジェクト obj) で
私のアプリは言葉遊びで、各レベルの言葉を XML ファイルから取得します。そのため、XmlReader がファイルを読み取っているとき、外国の文化を使用してラテン文字が取得され、厳密に英語のスプライト フォントを使用して文字を描画しようとするとアプリがクラッシュすると思われます。XmlReader に InvariantCulture を使用して読み取るように指示する方法を探してみました。これは .toString() メソッドで見られるものと似ていますが、何も見つかりませんでした。この問題を解決する方法はありますか?