2015-06-15 7 views
6

Ich versuche, eine Graptle-Aufgabe zu erstellen, die TexturePacker gemäß den Anweisungen here ausführt. (. Beachten Sie, dass ich Android Studio verwende und seine Verzeichnisstruktur statt Eclipse) Ich habe zuerst folgendes für die Android Studio Projekts build.gradle:LibGDX's TexturePacker mit Gradle

import com.badlogic.gdx.tools.texturepacker.TexturePacker 
task texturePacker << { 
    if (project.ext.has('texturePacker')) { 
    logger.info "Calling TexturePacker: "+texturePacker 
    TexturePacker.process(texturePacker[0], texturePacker[1], texturePacker[2]) 
    } 
} 

Dies gab den Fehler

derzeit keine Klasse lösen

com.badlogic.gdx.tools.texturepacker.TexturePacker

Verschieben der texturePacker Aufgabe build.gradle im Desktop-Projekt produziert den gleichen Fehler. Laut http://www.reddit.com/r/libgdx/comments/2fx3vf/could_not_find_or_load_main_class_texturepacker2/ muss ich auch compile "com.badlogicgames.gdx:gdx-tools:$gdxVersion" zu dem Stamm build.gradle unter den Abhängigkeiten des Desktop-Projekts hinzufügen. Wenn ich dies tue, bekomme ich immer noch den gleichen Fehler.

So habe ich einige Fragen:

  1. Wo ist der richtige Ort für die texturePacker Aufgabe? Welche build.gradle setze ich das ein?

  2. Wie löse ich das Abhängigkeitsproblem und den unable to resolve class... Fehler?

  3. Wie gebe ich die Eingabe- und Ausgabeverzeichnisse und die atlas-Datei an, wenn ich diese mit Gradle ausführe? (. Unter der Annahme, die ersten beiden Fragen gelöst sind)

Antwort

10

Ich habe arbeiten sie durch Zugabe von GDX-Tools meiner buildscript Abhängigkeiten:

buildscript{ 
    dependencies { 
     ... 
     classpath 'com.badlogicgames.gdx:gdx-tools:1.5.4' 
    } 
} 

, indem Sie diese, build.gradle meine Desktops konnte importieren Sie die Textur Packer Klasse:

import com.badlogic.gdx.tools.texturepacker.TexturePacker 
task texturePacker << { 
    if (project.ext.has('texturePacker')) { 
     logger.info "Calling TexturePacker: "+ texturePacker 
     TexturePacker.process(texturePacker[0], texturePacker[1], texturePacker[2]) 
    } 
} 

bitte beachten Sie, dass Ihre ext Desktop-Projekt müssen texturePacker definiert haben:

project.ext { 
    mainClassName = "your.game.package.DesktopLauncher" 
    assetsDir = new File("../android/assets"); 
    texturePacker = ["../images/sprites", "../android/assets", "sprites"] 
} 
+0

Das funktioniert, aber ich musste im Input/Output-Pfad "zu" ändern. Wie stelle ich nun die maxWidth und maxHeight ein? Ich probierte Def Einstellungen = neue TexturePacker.Settings() settings.maxHeight = 4096 settings.maxWidth = 2048, aber es failes mit allgemeinen Fehler. – Shirane85

+1

Ich normalerweise nur [fügen Sie ein pack.json] (https://github.com/libgdx/libgdx/wiki/Texture-packer#configuration) in meine Ordner –

+0

Eine Verbesserung dieser Lösung wäre, die Strings in 'TexturPacker zu benennen 'Sinnvoller als ein Array zu verwenden. –