我想要做的是Load()
使用内容管理器在 XNA 中创建音效并自动创建一个实例来控制播放。当不再需要声音时,我想知道如何Unload()
从记忆中正确地使用它?
此外,我想知道是否Unload()
甚至需要。当我调用Load()
两次时,第二次调用是否正确释放了第一次调用的内存?我猜想 C# 垃圾收集器会自动处理旧的效果和实例,因为它们被第二次调用覆盖。这个对吗?
这些是我的自定义MySoundEffect
类中的参数:
// Has sound effect been loaded?
bool loaded;
// Store our SoundEffect resource
SoundEffect effect;
// Instance of our SoundEffect to control playback
SoundEffectInstance instance;
此方法正在加载声音。
public void Load(String location)
{
effect = Content.Load<SoundEffect>(location);
if (effect != null) loaded = true;
else
{
Error.Happened("Loading of sound effect " + location + " failed.");
return;
}
// Create instance
instance = effect.CreateInstance();
}
当不再需要声音时调用它:
public void Unload()
{
loaded = false;
instance.Dispose();
effect.Dispose();
}