私はJavaで2Dのタイルベースのゲームを書いています。文字は、ゲームロジックに従ってタイル上に配置される。各文字は、java.awt.Graphics2D
を使用して画面に描画される画像に関連付けられています。ただし、マップ上に各文字のインスタンスが複数存在する可能性があります。Javaクラスをイメージにロードする - 最も効率的な方法ですか?
文字の画像を保存してアクセスする際の推奨慣行は何ですか?
私は考えることができ三つの可能な実装があります。
- タイプ
java.awt.image.BufferedImage
のプライベート変数を割り当てられた各文字を有します。オブジェクトを描画する必要があるたびに、ゲッターを使用してイメージにアクセスします。しかし、これはオブジェクトのサイズが大きすぎる原因になりますか? - 静的変数にすべてのイメージを格納する別のユーティリティクラスがあります。文字を描画する必要があるたびに、ユーティリティクラスの静的ゲッターメソッドにID /名前を渡すことでイメージを呼び出すことができます。これはより効率的か、以前の方法よりもかなり遅くなるでしょうか?
- 文字を描画する必要があるたびに画像をロードするだけです。これは、文字を描画する必要があるたびに
ImageIO.read(new File(character.getImagePath())
を引き起こします。これは最も速いでしょうか?
オプション3を使用する必要はありません。ペイント方法は、通常、毎秒何回か呼び出されます。*オペレーティングシステムのキャッシュが有効であっても頻繁にファイルを読み込むと、ゲームがクロールに遅くなります。 – VGR
個々の画像の代わりにスプライトシートを使用します。 – eldo