我的影片從網上例子得出一個基本的聲音管理器類:http://www.xnawiki.com/index.php?title=Basic_Sound_Manager_For_XNA_GS_3.0NullReferenceException異常的聲音管理器類,簡單的C#XNA
的問題是,每當我打電話LoadSound讀取(字符串ASSETNAME,串assetPath)方法,我得到一個NullReferenceException。我猜這意味着內容管理器找不到指定的引用並返回null。 雖然這對我來說沒有任何意義,因爲我參考的內容文件夾中確實有聲音。在我將健全的管理轉移到一個單獨的課程之前,它很有效
下面是我的SoundManager類中的類相關的代碼片段:
public static class SoundManager
{
// Class variables
static Dictionary<string, SoundEffect> sounds = new Dictionary<string,
SoundEffect>();
static Song currentSong;
static ContentManager content;
static float soundVolume = 1f;
// Initialize: Load the game's content manager.
public static void Initialize(Game game)
{
content = game.Content;
}
public static void LoadSound(string assetName)
{
LoadSound(assetName, assetName);
}
// Load a sound from a passed name into the dictionary
public static void LoadSound(string assetName, string assetPath)
{
sounds.Add(assetName, content.Load<SoundEffect>(assetPath));
}
}
的例外行
sounds.Add(assetName, content.Load<SoundEffect>(assetPath));
在的Game1的Initialize()方法時,我打電話:
SoundManager.Initialize(this);
在Game1的LoadContent()方法中,我打電話給:
SoundManager.LoadSound("collision", "Sounds\\collision");
Content.RootDirectory是「Content」,並且在content/sounds/ding.wav(資產名稱衝突)處存在聲音。我在這裏認真看不到任何問題。如果有任何人可以看到的任何奇怪的範圍問題,請幫助,我即將到期。
您能否發佈完整的異常,包括堆棧跟蹤請 – 2012-01-07 19:22:35
如果LoadSound在Initialize之前被調用,則內容將爲空。否則,問題可能在另一種方法中,在這種情況下,堆棧跟蹤將很有用。 – 2012-01-07 19:26:34