私はLibgdxを学習するためにチュートリアルを実行しますが、そのたびに同じインスタンスまたは変数を使用してスプライトオブジェクトを出力します。したがって、同じイメージまたはスプライトを作成してレンダリングしたい場合は、同じ変数を単純に使用できます。しかし今、私はいくつかのオブジェクト(異なるプレイヤー/イメージ)を表示する必要があります。それでも同じ変数を使用して出力することはできますか、それぞれの変数を作成する必要はありますか?私はそれがスペースとメモリを節約するのを見ました。スプライトを出力するには、SpriteBatch、Texture、Sprite、およびTextureRegion(スプライトの移動用)オブジェクトを使用しています。LibGdx複数のオブジェクトの1つまたは複数のインスタンス
0
A
答えて
1
異なるエンティティ(プレーヤーなど)に同じスプライトオブジェクトを使用することはできません。これはメモリを保存する場所ではありません。スプライトオブジェクトの作成は、重量の重い操作ではありません。
ここで、メモリを節約できるのはテクスチャです。テクスチャは可能な限り再利用する必要があります。新しいスプライトを作成するたびに、新しいテクスチャを読み込む必要はありません。プレーヤーを表す1つの画像があるとします。その画像を繰り返し作成するべきではありません。 AssetLoaderを使用してメモリに一度ロードし、それを再利用するだけです。
小さなサイズのテクスチャが複数ある場合は、libgdxのテクスチャパッカーを使用して複数の小さなテクスチャをロードするのは良いことではないため、大きなテクスチャシートを読み込むのは良い方法です。高価な操作です。詳細については、Texture Atlasをお読みください。
また、テクスチャが不要になったら、それらを処分する必要があります。
多くのLibgdxクラスで実装されているDisposableインターフェイスの詳細については、Memory Management in Libgdxを参照してください。
あなたはゲームを早めに最適化しようとしているように感じています。このような初期の段階では、オブジェクトの作成についてまったく心配しないでください。もう1つ覚えてください。時期尚早最適化はすべての悪の根源です。
関連する問題
- 1. 1つまたは複数のインスタンスを表示しますか?
- 2. libGDX:1つのラベルに複数色のテキストがあります
- 3. 1つのアクティビティで同じカスタムアダプタの複数のインスタンスを持つ複数のListView
- 4. LibGdx複数のタッチハンドリングリスナー
- 5. libgdx複数のパンイベント
- 6. エンティティフレームワーク複合型の1つのモデルに複数のインスタンス?
- 7. 1つまたは複数のファクトテーブル?
- 8. 1つまたは複数のレイアウト?
- 9. Git:1つまたは複数のリポジトリ
- 10. 複数のセッションまたは1つ?
- 11. 1つのオブジェクト、複数のonclickイベント
- 12. mysql用の複数のドッキング・コンテナまたは複数のデータベース用の1つのインスタンス
- 13. mongoDB複数のインスタンスまたは複数のデータベース
- 14. 複数のmongodbインスタンスを1つのmongodbインスタンスにマージ/統合
- 15. 複数のウィジェットを持つLibGDXとScrollPane
- 16. スタティックまたはグローバルスルーの複数のインスタンス
- 17. 複数のパラメータを持つ1つのメソッドまたは1つのパラメータを持つ複数のメソッド?
- 18. TinyIoC:1つのインスタンスに複数のインターフェイスを登録します。
- 19. 1つのコマンドまたはスクリプトで複数のインスタンスをシャットダウンする
- 20. オブジェクト/デザインパターンヘルプの複数インスタンスのライフタイム
- 21. 複数のインスタンス
- 22. 複数のインスタンス
- 23. 複数のインスタンス
- 24. 複数のドキュメントセットを1つまたは複数のコアに保存
- 25. 複数のGETリクエストと複数のオブジェクトを返す1つのGET
- 26. 複数の画像と1つのxml、または1つの画像と複数のxml?
- 27. javascript replace()複数のhtmlを持つ複数のbbcodeインスタンス
- 28. 1つのノード内のdeepstream.ioサーバーの複数のインスタンス
- 29. IE7の複数のタブとツールバーの1つのインスタンス
- 30. オブジェクトの複数のインスタンスを同期させました