ようになっているはずのためにあなたは、この目的のためにTextureAtlasを使うべきだと思います。アトラスは、LibGDX TexturePackerによって別々のイメージから自動的に生成されるファイルです。あなたのシート内の画像境界からNinePatch
情報まですべてを保存します。別々のイメージをフォルダに入れ、そのフォルダでTexturePackerを実行するだけです。これは簡単にロードできるシートと.atlas/.packファイルを作成します。
コマンドラインに問題がある場合はTexturePackerGuiが存在しますが、コマンドラインをお勧めします。また、アプリ内で使用することもできます。
私が通常行っていることは、開発中にこれらのシートをオンザフライで作成することです。私は簡単に別の画像を上書きすることができ、私は再び私のアプリを実行した後にすぐに効果があります。プロジェクトのルートに新しいフォルダimages
を作成します。その後、各パックごとに別のフォルダを作成する必要があります。この例では、images
にtileset
というフォルダを作成します。 DesktopLauncher
では、このフォルダを設定して画像からアトラスを作成します。
TexturePacker.Settings settings = new TexturePacker.Settings();
settings.maxWidth = 1024;
settings.maxHeight = 1024;
設定ファイルには、あなたのアトラスに関するすべてが指定されています。イメージ、パディング、回転などから透明度を取り除く必要がある場合は、単一のシートの最大サイズです。これらはすべて非常に簡単で、これらのすべてをドキュメントで見ることができます。これらの設定を使用して、アトラスを作成することができます。
TexturePacker.process(settings,
"../../images/tileset", //where to find the images to be packed.
"../../android/assets/tileset/", //where to store the atlas and sheet
"tileset"); //what filename to use
これで、.atlasファイルを開くことができます。ファイル名をエイリアスとして使用することができます。このエイリアスはそれらを検索するために使用されますが、まずアトラスを読み込みます。それが今度はandroid/assets/
ではデフォルトでは、あなたのローカルパスではデフォルトで見えコンストラクタに単なる文字列を渡すことで
TextureAtlas atlas = new TextureAtlas("tileset/tileset.atlas");
。今、アトラスにシート内の資産を引き渡すよう依頼することができます。
atlas.findRegion( "alias"); // "エイリアス"という名前のシートに画像を渡します
このようなテクスチャを検索するのはやや高価です。このように多くのテクスチャを検索したくないので、まだどこかに保存する必要があります。
あなたがimage_01.png
、image_02.png
、image_03.png
のようなあなたのイメージシーケンスに名前を付ける場合は、同じ名前の下にそれらをすべて保存し、アトラス内では、彼らはそれがindex
だ府ソートします。ですから、特定のテクスチャの別々の配列をしたい場合は、_xx
でそれらに名前を付け、一度にそれらのすべてを取得することができます:
atlas.findRegions("alias");
これはAnimation
のために特に便利です。画像シーケンスをフォルダにコピーし、パックするように指定するだけです。シーケンスの名前を正しく指定し、リージョンをアニメーションに指定します。すべてがバットからすぐに機能します。あなたはそれがTextureAtlas.class
からだ指定することになり除いAssetManager
とTextureAtlas
をロード
はかなり正常なTexture
と同じです。あなたは常に画像を扱う.atlas
をロードします。
私は常に資産を読み込むためにAssetDescriptor
を使用します。あなたがどこにいたら私は静的なものを取り除くだろうAssets.textures[]
since that will get you into trouble sooner or later。
//None static AssetManager with getter
private AssetManager manager = new AssetManager();
public AssetManager getManager() { return manager; }
//Specify a descriptor for the atlas, this is static so I can acces it anywhere.
//It's just a descriptor of the asset so this is safe.
public static final AssetDescriptor<TextureAtlas> TileSet = new AssetDescriptor<TextureAtlas>("tileset/tileset.atlas", TextureAtlas.class);
//then just load everything
public void load()
{
manager.load(tileSet);
//... load other stuff
}
今、ちょうどあなたがあなたの資産へのアクセスを必要とし、あなただけそうのような任意の資産をロードすることができますどこにでもAssetManager
オブジェクトを渡す:
TextureAtlas tileset = assetManager.get(Assets.TileSet);
テクスチャアトラスは、スケールのための良いアイデアですが、それはまだに重要ですそれがどのように機能するか知っているいいぞ。 –