しばらくモノゲームを使用していますが、コンテンツをロードする最良の方法は何だろうと思っていました。画面上にオブジェクトを常に作成する間隔システムがあるとしましょう。その場合、オブジェクトのスプライトをゲーム クラスにロードしてスプライト変数をコンストラクターに配置するか、コンテンツ変数をオブジェクト コンストラクターに配置してからスプライトをロードする必要があります。オブジェクト内?
ところで、私はフレームレートを維持し、メモリの使用量を減らすように努めています。
しばらくモノゲームを使用していますが、コンテンツをロードする最良の方法は何だろうと思っていました。画面上にオブジェクトを常に作成する間隔システムがあるとしましょう。その場合、オブジェクトのスプライトをゲーム クラスにロードしてスプライト変数をコンストラクターに配置するか、コンテンツ変数をオブジェクト コンストラクターに配置してからスプライトをロードする必要があります。オブジェクト内?
ところで、私はフレームレートを維持し、メモリの使用量を減らすように努めています。
3 つの異なるソリューションがあり、それぞれが異なるタイプのゲームに適合します。
Load everything in LoadContent
これにより、初期起動時間が長くなりますが、すべてがロードされた後は、もう何も待つ必要はありません。ただし、これはテトリス、アルカノイド、チェスなどの小さなゲームにのみ適していることに注意してください。一般的に多くのコンテンツを持たないゲーム。ロードするコンテンツが多いほど、より多くのメモリが消費されることに注意してください。
Load everything needed for the current scene
これはほとんどのゲームで行われていることです。これは、一度も使用していないシーンのデータをロードしたり、まだアクセスしていないシーンのデータをロードしたりしないためです。
Load everything needed for the current scene (Extended)
前の回答と同じですが、少しひねりがあります。可能であれば、他のコンテンツを表示しながらコンテンツを読み込みます。たとえば、プレーヤーがシーンを完了するための最後のステップを完了するとすぐに、次のシーンの読み込みを開始します。
アルカノイドの例: ボールが最後のブロックに当たるとすぐに (または、勇気がある場合は、ボールが最後のブロックに当たると計算できるとすぐに)、次のシーンのコンテンツの読み込みを開始します。ボールが最後のブロックに向かって飛んでいる間、また現在のシーンのスコア (時間、死亡、ボーナスなど) を表示している間、これをロードします。
また、シーンが読み込まれる前にプレーヤーが実際にダイアログを閉じた場合は、データの読み込みが完了するまでの間、別の読み込みシーンを表示します。そうすれば、読み込み時間が 10 秒ではなく 1 ~ 2 秒になる可能性があります。
このすべての読み込みをバックグラウンド スレッドで実行することを忘れないでください。
フレーム レートの最適な方法は、ゲーム ループが開始する前にロードすることです。しかし、メモリを減らす最善の方法は、必要なときに正しく、使い終わったら廃棄することです。相互に包括的である必要はありません...あなたの毒を選んでください。