これは私を悩ませてきたものです。SoundEffectInstance
ビアを作成した場合は、使いSoundEffect.CreateInstance()
終わったときに破棄することを意図しています。私が知る限りSoundEffect.CreateInstance()
使用しません。ContentManager
ファイルからロードしますか、それともコピーをメモリに保持しますか? ファイルからの読み込みは明らかに非常に遅くなります:-/
これは私を悩ませてきたものです。SoundEffectInstance
ビアを作成した場合は、使いSoundEffect.CreateInstance()
終わったときに破棄することを意図しています。私が知る限りSoundEffect.CreateInstance()
使用しません。ContentManager
ファイルからロードしますか、それともコピーをメモリに保持しますか? ファイルからの読み込みは明らかに非常に遅くなります:-/
実装の詳細です。確かなことはわかりませんが、問題ではありません。プラットフォームによって異なる可能性があり、将来変更される可能性があります。
ただし、経験に基づいた推測を行うことができます。まず、 がSoundEffectInstance
存在し、サウンド ファイルを にロードするという事実は、サウンド エフェクトをメモリに保持する役割を担っている可能性が高いことをSoundEffect
示しています。SoundEffect
また、SoundEffect.FromStream
および バッファーベースのコンストラクターの存在は、サウンド バッファーをメモリに保持するメカニズムが必要SoundEffect
であることを強く示しています。したがって、ファイルからをロードする場合、同じメカニズムを使用すると想定するのがかなり安全です。SoundEffect
SoundEffect
本当に重要な場合は、 をロードしてSoundEffect
からインスタンスを作成した後、サウンド ファイルを削除または変更してテストできます。
いつものように、パフォーマンスが本当に重要な場合は、それを測定する必要があります。
もちろん、 を作成すると、SoundEffectInstance
リソースが割り当てられます (オーディオ ボイス、マネージ メモリ、およびおそらくアンマネージ メモリ)。したがって、インスタンスをプールして再利用するなどして回避できる場合は、定期的に作成する必要はありません。を使用している場合SoundEffect.Play
、はオブジェクトSoundEffect
のプールを内部的に管理しています。SoundEffectInstance