Libgdx: TiledMapObjectsのテンプレートを利用する

作成日 2018年02月21日  ·  4コメント  ·  ソース: libgdx/libgdx

Tiled 1.1は、オブジェクトテンプレートのサポートを追加します。 テンプレートは外部ファイルとして保存され、タイルセットからタイルを配置するのと同じように、タイルマップにテンプレートを配置できます。

保存されたXMLには、テンプレートファイルへのパスがオブジェクト要素の属性として保存されます。

テンプレートオブジェクトを配置して名前を変更したとします。 対応するXMLは次のようになります。

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

ご覧のとおり、通常の属性(幅、高さ、タイプなど)の多くが欠落しています。 Tiledでは、テンプレートファイルからこれらのプロパティを読み取っているため、これらのプロパティを引き続き表示できます。

libgdxの実装には、 BaseTmxMapLoader.loadObject()template属性を取得し、それが指す.txファイルをロードし、そのテンプレートを使用して不足しているプロパティを入力することが含まれると思います。

.txファイル自体に関しては、その構造は非常に単純に見えます。

<?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>

したがって、オブジェクトが.tmxファイルに保存されるのと同じ方法で保存されます。

タイルマップのテンプレートからオブジェクトをデタッチすることでこの制限を回避できますが、タイルのテンプレート機能を最大限に活用できると便利です。

enhancement tilemap

全てのコメント4件

同意しますが、これは、すでに採用されているツールの新しいバージョンでlibを更新し続けることに該当します。

これに関する更新はありますか?

回避策として、タイルマップエディタには、テンプレートからオブジェクトをデタッチするためのエクスポートオプションが用意されています。
これをプロジェクトビルドのライフサイクルに統合して、CLIを使用してLibGDX互換のマップを自動的に生成できます。

'Tiled'エディターCLIを介してマップをエクスポートするコマンドの例:
tiled --export-map --detach-templates src/main/tiledmaps/test1.tmx src/main/resources/maps/test1.tmx
最初のマップファイルがソースで、2番目のマップファイルがターゲットです。
ターゲットファイルはテンプレートファイルを参照しなくなり、テンプレートのすべてのプロパティが含まれます。

すべてのマップをオンデマンドでエクスポートするGradleタスクの例(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")
}

detach-preferencesの情報については、 https://www.mapeditor.org/2018/09/18/tiled-1-2-0-released.htmlを参照してください。 検索する:

このため、いくつかのエクスポートオプションが設定に追加されました。

ただし、実際のオブジェクトテンプレートのサポートをクラスに実装するのはそれほど手間がかかりません。 プルリクエストが受け入れられ、次のlibgdxバージョンがリリースされるのを待つ間、私はそれをフォークしてプロジェクトにカスタムlibgdxバージョンを使用したくありませんでした。

こんにちは、私はLibGDXを使用して教育リソースを作成しています。テンプレートをデタッチしてエクスポートせずにテンプレート機能を動作させると、非常に役立ちます。

このページは役に立ちましたか?
0 / 5 - 0 評価