2017-03-21 17 views
0

私はLibgdxを学習するためにチュートリアルを実行しますが、そのたびに同じインスタンスまたは変数を使用してスプライトオブジェクトを出力します。したがって、同じイメージまたはスプライトを作成してレンダリングしたい場合は、同じ変数を単純に使用できます。しかし今、私はいくつかのオブジェクト(異なるプレイヤー/イメージ)を表示する必要があります。それでも同じ変数を使用して出力することはできますか、それぞれの変数を作成する必要はありますか?私はそれがスペースとメモリを節約するのを見ました。スプライトを出力するには、SpriteBatch、Texture、Sprite、およびTextureRegion(スプライトの移動用)オブジェクトを使用しています。LibGdx複数のオブジェクトの1つまたは複数のインスタンス

答えて

1

異なるエンティティ(プレーヤーなど)に同じスプライトオブジェクトを使用することはできません。これはメモリを保存する場所ではありません。スプライトオブジェクトの作成は、重量の重い操作ではありません。

ここで、メモリを節約できるのはテクスチャです。テクスチャは可能な限り再利用する必要があります。新しいスプライトを作成するたびに、新しいテクスチャを読み込む必要はありません。プレーヤーを表す1つの画像があるとします。その画像を繰り返し作成するべきではありません。 AssetLoaderを使用してメモリに一度ロードし、それを再利用するだけです。

小さなサイズのテクスチャが複数ある場合は、libgdxのテクスチャパッカーを使用して複数の小さなテクスチャをロードするのは良いことではないため、大きなテクスチャシートを読み込むのは良い方法です。高価な操作です。詳細については、Texture Atlasをお読みください。

また、テクスチャが不要になったら、それらを処分する必要があります。

多くのLibgdxクラスで実装されているDisposableインターフェイスの詳細については、Memory Management in Libgdxを参照してください。

あなたはゲームを早めに最適化しようとしているように感じています。このような初期の段階では、オブジェクトの作成についてまったく心配しないでください。もう1つ覚えてください。時期尚早最適化はすべての悪の根源です。

関連する問題