У меня есть базовый класс менеджера звука, полученный из онлайн-примера: http://www.xnawiki.com/index.php?title=Basic_Sound_Manager_For_XNA_GS_3.0
Проблема в том, что всякий раз, когда я вызываю метод LoadSound (string assetName, string assetPath), я получаю исключение NullReferenceException. Я предполагаю, что это означает, что менеджер контента не может найти указанную ссылку и возвращает ноль.
Это не имеет смысла для меня, поскольку в папке с контентом, на которую я ссылаюсь, есть определенные звуки Это работало до того, как я переместил управление звуком в отдельный класс.
Вот соответствующий фрагмент кода для моего класса 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));
В методе Initialize () Game1 я вызываю:
SoundManager.Initialize(this);
В методе LoadContent () Game1 я вызываю следующее:
SoundManager.LoadSound("collision", "Sounds\\collision");
Content.RootDirectory - это «Контент», и в content / sounds / ding.wav (столкновение имени ресурса) существует звук. Я серьезно не вижу здесь никаких проблем. Если есть какие-то странные проблемы с областью видимости, которые кто-либо может увидеть, пожалуйста, помогите, у меня приближается крайний срок.