StackOverflowは過去に非常に役立つリファレンスでしたが、今では自分の障害に直面したので、ここに投稿してみようと思いました。
私の問題は、ゲームがSoundEffectファイルを読み込もうとすると、InvalidOperationExceptionでクラッシュすることです(詳細メッセージ:予期しないエラーが発生しました)。このゲームは、XNA 4.0フレームワークで、Visual Studio 2010 ExpressをIDEとして使用するC#で作成されています。ロードされるサウンドエフェクトはすべて.wavファイルであり、ゲームのコンテンツプロジェクトに追加されます。
ボードをチェックして、次の提案を試しました。
- 設定したcontent.rootDirectoryを確認します-「Content」に設定されています
- content.load<>が正しいパスを介してリソースにアクセスしていることを確認します。リフレクションを使用して、アプリケーションの現在のディレクトリを取得し、ルートディレクトリとアクセスしようとしたパスを使用しました。ファイルは確実に存在し、アクセス可能であり、その場所にあります。
- ContentManagerのコンテンツがnullでないことを確認します-デバッグを使用して確認します。これにより、とにかく別の例外がスローされます。
- WAVが8ビットまたは16ビットPCMであることを確認します。確認済み。
- ヘッダーが破損している可能性がありますか?このエラーは、ロードしようとしているすべてのサウンドエフェクトで発生するため、1つのファイルに関連するヘッダーの問題ではありません。
奇妙なことに、このエラーはどこからともなく発生したようです。先週は問題なく動作していましたが、今日はおかしくなりました。コンテンツの読み込みプロセスに影響を与えるような変更は加えていません。
エラーをスローするコードは次のとおりです。
public void LoadSoundEffect(ContentManager content, String assetPath)
{
if (content != null && String.IsNullOrEmpty(assetPath) == false)
{
// This next line throws the exception.
SoundEffect effectLoader = content.Load<SoundEffect>(assetPath);
soundLibrary.Add(assetPath, effectLoader);
}
}
スタックトレースは次のとおりです。
Microsoft.Xna.Framework.Helpers.ThrowExceptionFromErrorCode(Int32 error)at Microsoft.Xna.Framework.Audio.SoundEffect.AllocateFormatAndData(Byte [] format、Byte []> data、Int32 offset、Int32 count)at Microsoft.Xna.Framework .Audio.SoundEffect.Create(Byte [] format、Byte [] data、Int32 offset、Int32 count、Int32 loopStart、Int32 loopLength、TimeSpan duration)at Microsoft.Xna.Framework.Audio.SoundEffect..ctor(Byte [] format 、Byte [] data、Int32 loopStart、Int32 loopLength、TimeSpan duration)at Microsoft.Xna.Framework.Content.SoundEffectReader.Read(ContentReader input、SoundEffect previousInstance)at Microsoft.Xna.Framework.Content.ContentReader.InvokeReader [T]( Microsoft.Xna.Framework.Content.ContentReaderのContentTypeReaderリーダー、オブジェクトexistingInstance)。ReadObjectInternal [T](オブジェクトexistingInstance)at Microsoft.Xna.Framework.Content.ContentReader.ReadObjectT at Microsoft.Xna.Framework.Content.ContentReader.ReadAssetT at Microsoft.Xna.Framework.Content.ContentManager.ReadAsset [T](String AssetName 、Action`1 recordDisposableObject)at Microsoft.Xna.Framework.Content.ContentManager.Load [T](String AssetName)at SerializableDataTypes.AudioManager.LoadSoundEffect(ContentManager content、String AssetPath)in C:\ Users \ Mike \ Documents \ Visual Studio 2010 \ Projects \ Res Judicata Chapter1 \ SerializableDataTypes \ Script Elements \ AudioManager.cs:line 78Action`1 recordDisposableObject)at Microsoft.Xna.Framework.Content.ContentManager.Load [T](String AssetName)at SerializableDataTypes.AudioManager.LoadSoundEffect(ContentManager content、String AssetPath)in C:\ Users \ Mike \ Documents \ Visual Studio 2010 \ Projects \ Res Judicata Chapter1 \ SerializableDataTypes \ Script Elements \ AudioManager.cs:line 78Action`1 recordDisposableObject)at Microsoft.Xna.Framework.Content.ContentManager.Load [T](String AssetName)at SerializableDataTypes.AudioManager.LoadSoundEffect(ContentManager content、String AssetPath)in C:\ Users \ Mike \ Documents \ Visual Studio 2010 \ Projects \ Res Judicata Chapter1 \ SerializableDataTypes \ Script Elements \ AudioManager.cs:line 78
あなたが提供できるどんな助けにも前もって感謝します-私はこれに完全に困惑しています、そしてそれは本当にイライラするエラーです。