2017-07-30 14 views
0

私はAndroid用にネイティブに開発されたゲームを持っています。今ではユーザーにもiOSバージョンが必要です。私はLibGDXがゲームのJavaコードを再利用できるようにするために、より良い選択と思っていました。Androidのような異なる解像度のLibGDXアセット

私のゲームでは、デバイスの密度(drawable-hdpi、drawable-xhdpiなど)ごとにイメージサイズが異なります。

私の質問は、どのように同じことを達成することができますが、LibGDXを使用することです(変更が必要な場合は、iOSデバイスの解像度に必要な新しい密度を考慮します)。

ありがとうございます。

答えて

0

はい、同じことを達成できますが、ネイティブコードも作成しない限り、Androidでは自動では表示されません。

1)あなたのアプリケーションは、あなたがGdx.graphics.getHeight()getWidth()を使用してscreen sizeと密度を得ることができます開始し、Gdx.graphics.getDensity()

2)は、サイズに応じて:私はそれを管理するための最良の方法は、それを自分で行うには、単純であることを発見しました密度を使用すると、場所のパスを資産をロードする正しいフォルダに変更できます。

3)アセットローディングコードを実行する際には、上記の手順で設定したパスが使用されていることを確認して、そのディスプレイサイズ/密度に適したアセットを取得します。

0

ほとんどの場合、最大の画像を使用して、解像度とアスペクト比を処理するのに`Viewports'を使用することができます。大きな画像は縮小され、これにより、もちろん詳細の一部が失われます。

ビューポートは、表示する画面にゲームの世界のサイズを自動的に拡大/縮小します。たとえば、FitViewport(100, 100)は、100 x 100 "ゲームユニット"を表示するビューポートを作成します。 1920 x 1080デバイスでこれをプレイする場合は、100 x 100のゲームワールドを1080 x 1080エリアに合わせて、840 x 1080の空のままにします。

ゲームの世界のサイズはピクセルとは関係ありません。 0.5f x 0.5fの世界単位の敵を作成し、そのテクスチャに256 x 256ピクセルを与えることができます。あなたのビューポートは正しいサイズに調整します。

ピクセル完全ゲームが必要な場合を除き、これで十分です。より大きい画面ではあるが低解像度のデバイスでは、フィルタリングのためにいくつかの小さなアーティファクトが発生する可能性があります。テクスチャのフィルタリングを設定すると、Texture.setFilter(TextureFilter.Nearest, TextureFilter.Linear)が一部修正される可能性があります。

私の芸術のピクセルは、おおよそ少なくとも1つの画面ピクセルを表現する必要があります。通常、私はちょうどHD用に完全なピクセルを描画し、それは800 x 480画面上で正常に見えます。 MipMapsを使用してさらにパフォーマンスを絞りたい場合は、の設定で自動的にTexturePackerが生成されますが、私はそれらの経験はありません。

関連する問題