Libgdx: Verwenden Sie die Vorlagen von TiledMapObjects

Erstellt am 21. Feb. 2018  ·  4Kommentare  ·  Quelle: libgdx/libgdx

Tiled 1.1 fügt Unterstützung für Objektvorlagen hinzu. Eine Vorlage wird als externe Datei gespeichert, und Sie können Vorlagen in Ihrer Kachelkarte platzieren, ähnlich wie Sie Kacheln aus einem Kachelsatz platzieren.

Im gespeicherten XML wird der Pfad zur Vorlagendatei als Attribut des Objektelements gespeichert.

Angenommen, ich habe ein Vorlagenobjekt platziert und umbenannt. Das entsprechende XML würde so aussehen:

<object id="6" template="../just/an/example.tx" name="Custom Name" x="168" y="483">

Wie Sie sehen, fehlen viele der üblichen Attribute (wie Breite, Höhe und Typ). In Tiled kann ich diese Eigenschaften immer noch sehen, weil sie aus der Vorlagendatei gelesen werden.

Ich denke, die libgdx-Implementierung würde beinhalten, dass BaseTmxMapLoader.loadObject() das template -Attribut erhält, die .tx -Datei lädt, auf die es zeigt, und die fehlenden Eigenschaften mit dieser Vorlage ausfüllt.

Die Struktur der .tx -Datei selbst sieht ziemlich einfach aus:

<?xml version="1.0" encoding="UTF-8"?>
<template>
 <object name="Default name" type="Example" height="48">
  <properties>
   <property name="some custom property" value="test"/>
  </properties>
 </object>
</template>

Es wird also genauso gespeichert, wie Objekte in .tmx -Dateien gespeichert werden.

Ich kann diese Einschränkung umgehen, indem ich Objekte von ihren Vorlagen in meiner Kachelkarte trenne, aber es wäre schön, wenn ich die Vorlagenfunktionalität in Tiled voll ausnutzen könnte.

enhancement tilemap

Alle 4 Kommentare

Stimmen Sie zu, aber dies fällt unter das Aktualisieren der Bibliothek mit den neuen Versionen der Tools, die bereits übernommen wurden.

Irgendwelche Updates dazu?

Als Problemumgehung bietet der gekachelte Karteneditor Exportoptionen, um Objekte von den Vorlagen zu lösen.
Dies kann in den Projekt-Build-Lebenszyklus integriert werden, um die LibGDX-kompatiblen Karten automatisch mit der CLI zu generieren.

Beispielbefehl zum Exportieren der Karte über die CLI des 'Tiled'-Editors:
tiled --export-map --detach-templates src/main/tiledmaps/test1.tmx src/main/resources/maps/test1.tmx
Die erste Map-Datei ist die Quelle, die zweite das Ziel.
Die Zieldatei referenziert nicht mehr die Vorlagendatei und hat alle Eigenschaften der Vorlage.

Beispiel für eine Gradle-Aufgabe zum Exportieren aller Karten bei Bedarf (geschrieben in Kotlin Gradle DSL):

task("exportMaps") {
    val inputDir = "$projectDir/src/main/tiledmaps"
    val outputDir = "$projectDir/src/main/resources/maps"
    inputs.dir(inputDir)
    outputs.dir(outputDir)
    doLast {
        logger.info("Exporting 'Tiled' maps from directory $inputDir to $outputDir")
        val tmxFiles = file(inputDir).listFiles { dir, name -> name.endsWith(".tmx") }
        @Suppress("RECEIVER_NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS")
        tmxFiles.forEach {
            logger.info("Exporting ${it.name}")
            exec {
                val outputFile = file(outputDir).absolutePath + "/" + it.name
                commandLine = listOf("tiled", "--export-map", "--detach-templates", it.absolutePath, outputFile)
            }
        }
    }
}
tasks.clean {
    delete(fileTree("$projectDir/src/main/resources/maps") {
        exclude(".gitignore")
    })
}
tasks.processResources {
    dependsOn("exportMaps")
}

Lesen Sie als Referenz https://www.mapeditor.org/2018/09/18/tiled-1-2-0-released.html für Informationen zu den Detach-Preferences. Suchen nach:

Aus diesem Grund wurden den Einstellungen mehrere Exportoptionen hinzugefügt:

Allerdings ... die Implementierung der tatsächlichen Unterstützung von Objektvorlagen in die Klassen sollte nicht viel Aufwand sein. Ich wollte es einfach nicht forken und eine benutzerdefinierte libgdx-Version für mein Projekt verwenden, während ich darauf warte, dass ein Pull-Request akzeptiert und die nächste libgdx-Version veröffentlicht wird.

Hallo, ich erstelle eine Bildungsressource mit LibGDX. Wenn die Vorlagenfunktion funktioniert, ohne dass die Vorlage exportiert wird, wäre dies sehr hilfreich.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen