2

コマンド ラインから TexturePacker を使用していますが、複数のスプライトを 1 つのシートにパックすることができません。1 つのスプライトを実行できるので、コマンドは問題ありません。

これは私が使用しているコマンドです。

"TexturePacker --format sparrow --texture-format atf --opt DXT5 --max-width 2048 --max-height 2048 --size-constraints POT --pack-mode Best --enable-rotation --trim-mode Trim --algorithm MaxRects --multipack --border-padding 5 --shape-padding 5 --reduce-border-artifacts --scale " + sheetInfo.scale + " --data " + imageOutputDirectory + "\" + lanfPrefix + "\" + sheetInfo.name + ".xml " + "--sheet " + imageOutputDirectory + "\" + lanfPrefix + "\" + sheetInfo.name + ".atf image1.png image2.png";

これが機能しない理由はありますか?ドキュメントによると、それは動作するはずです。

4

2 に答える 2

1

TexturePacker のドキュメントが不十分なため、これを理解するのに多くの試行錯誤が必要でした!

複数の画像を 1 つのスプライト シートに追加するために、画像 img_1 から img_4 を含む out.png (デフォルト) という名前のアトラスを作成するサンプル コマンドを次に示します。

TexturePacker --format unity-texture2d img_1.png img_2.png img_3.png img_4.png

重要なのは、スペースだけで区切られたイメージ ファイル名のリストです。私は Python で作業しているので、上記のサンプル行と同じアトラスを作成するために使用するスクリプトを次に示します。glob とワイルドカードを使用すると、多くの画像を含むフォルダーから画像を選択できるようになり、TexturePacker のためだけに必要なファイルをフォルダーに分離する必要がなくなります。

import subprocess, glob
TP = r"C:\Program Files\CodeAndWeb\TexturePacker\bin\TexturePacker.exe"
baseFrame = "img"
def FillAtlas(baseFrame):
    globString = baseFrame + "_*.png"
    frameList = glob.glob(globString)
    imgList = []
    for frame in frameList:
        imgList.append(frame)
    TPargs = [TP, "--format", "unity-texture2d"] + imgList
    subprocess.call(TPargs)

FillAtlas(baseFrame)
于 2016-03-03T10:22:36.953 に答える