私がやりたいことはLoad()
、Content Manager を使用して XNA で効果音を作成し、再生を制御するインスタンスを自動的に作成することです。サウンドが不要になったとき、Unload()
メモリから適切にするにはどうすればよいか考えていました。
さらに、必要なのかどうか疑問に思っていUnload()
ました。2 回呼び出すとLoad()
、2 回目の呼び出しで最初の呼び出しのメモリが適切に解放されますか? C# のガベージ コレクターは、古いエフェクトとインスタンスが 2 回目の呼び出しで上書きされるため、それらを自動的に破棄すると思います。これは正しいです?
これらは、私のカスタム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();
}