まず、これはContent.RootDirectory="Content"ではないことを述べておきます。問題。私はそのコード行がある場合とない場合でこれを試しました。3つの辞書を持つFileFactoryというクラスがあります。1つはテクスチャ用、もう1つはサウンド用、もう1つはスプライトフォント用です。他のタイプのオブジェクトのXMLファイルをロードする他のファクトリもあり、それらは完全に機能します。フォントをロードするコードは次のとおりです。
public static void LoadFonts(ContentManager content)
{
string[] filePaths = Directory.GetFiles(@"Content\fonts\");
string key;
foreach (string s in filePaths)
{
key = Path.GetFileNameWithoutExtension(s);
Fonts.Add(key, content.Load<SpriteFont>(s));
}
}
エラーは次のとおりです。「"Content\ fonts\ammoFont.xnb"の読み込み中にエラーが発生しました。ファイルが見つかりません。」ファイルが文字列としてfilePaths配列に追加されるディレクトリにある必要があることを考えると、ファイルは明らかにそこにあります。私もフォルダをチェックしました、そしてそれはそこにあります。完全なエラーは次のとおりです。
Microsoft.Xna.Framework.Content.ContentLoadExceptionが未処理でした
Message="Content \ fonts\ammoFont.xnb"の読み込み中にエラーが発生しました。ファイルが見つかりません。
\ Users \ Chris \ Documents \ Visual Studio 2010 \ Projects \ WindowsGame1 \ WindowsGame1 \ WindowsGame1 \ Game.cs:line 102 at Microsoft.Xna.Framework.Game.RunGame(Boolean useBlockingRun)at Microsoft.Xna.Framework.Game.Run( )at WindowsGame1.Program.Main(String [] args)in C:\ Users \ Chris \ Documents \ Visual Studio 2010 \ Projects \ WindowsGame1 \ WindowsGame1 \ WindowsGame1 \ Program.cs:line 15 InnerException:System.IO.FileNotFoundException Message = 「Content\Content \ fonts\ammoFont.xnb.xnb」の読み込み中にエラーが発生しました。ファイルが見つかりません。Source = Microsoft.Xna.Framework StackTrace:at Microsoft.Xna.Framework.TitleContainer.OpenStream(String name)at Microsoft.Xna.Framework.Content.ContentManager.OpenStream(String AssetName)InnerException:
回答:このコードを変更してください:
Fonts.Add(key, content.Load<SpriteFont>(s));
これに:
Fonts.Add(key, content.Load<SpriteFont>("fonts\\" + key));