0

これは私を悩ませてきたものです。SoundEffectInstanceビアを作成した場合は、使いSoundEffect.CreateInstance()終わったときに破棄することを意図しています。私が知る限りSoundEffect.CreateInstance()使用しません。ContentManager

ファイルからロードしますか、それともコピーをメモリに保持しますか? ファイルからの読み込みは明らかに非常に遅くなります:-/

4

1 に答える 1

3

実装の詳細です。確かなことはわかりませんが、問題ではありません。プラットフォームによって異なる可能性があり、将来変更される可能性があります。

ただし、経験に基づいた推測を行うことができます。まず、 がSoundEffectInstance存在し、サウンド ファイルを にロードするという事実は、サウンド エフェクトをメモリに保持する役割を担っている可能性が高いことをSoundEffect示しています。SoundEffectまた、SoundEffect.FromStreamおよび バッファーベースのコンストラクターの存在は、サウンド バッファーをメモリに保持するメカニズムが必要SoundEffectであることを強く示しています。したがって、ファイルからをロードする場合、同じメカニズムを使用すると想定するのがかなり安全です。SoundEffect SoundEffect

本当に重要な場合は、 をロードしてSoundEffectからインスタンスを作成した後、サウンド ファイルを削除または変更してテストできます。

いつものように、パフォーマンスが本当に重要な場合は、それを測定する必要があります。

もちろん、 を作成すると、SoundEffectInstanceリソースが割り当てられます (オーディオ ボイス、マネージ メモリ、およびおそらくアンマネージ メモリ)。したがって、インスタンスをプールして再利用するなどして回避できる場合は、定期的に作成する必要はありません。を使用している場合SoundEffect.Play、はオブジェクトSoundEffectのプールを内部的に管理しています。SoundEffectInstance

于 2011-06-15T02:55:38.133 に答える