Ошибка синтаксического анализа файла tmx и JSON в Android Studio

Я пытаюсь загрузить простую карту, созданную Tiled, в свой проект студии Android. Я использую libGDX для создания простой платформенной игры. В Tiled я только что импортировал набор тайлов, создал платформу и все остальное.

Теперь я хотел бы понять в части ведьм, что у меня не получается загрузить, потому что я не могу понять, почему у меня эта ошибка:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationException: Error parsing file: mapassets.json
at com.badlogic.gdx.utils.XmlReader.parse(XmlReader.java:83)
at com.badlogic.gdx.maps.tiled.TmxMapLoader.getDependencyFileHandles(TmxMapLoader.java:116)
at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:74)
at com.badlogic.gdx.maps.tiled.TmxMapLoader.load(TmxMapLoader.java:59)
at com.arcadan.push_the_player.TiledTest.create(TiledTest.java:28)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:150)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:127)


Caused by: com.badlogic.gdx.utils.SerializationException: Error parsing XML on line 1 near: 
{ "columns":10,
 "image":"../..
at com.badlogic.gdx.utils.XmlReader.parse(XmlReader.java:330)
at com.badlogic.gdx.utils.XmlReader.parse(XmlReader.java:61)
at com.badlogic.gdx.utils.XmlReader.parse(XmlReader.java:81)
... 6 more

Вот карта .tmx:

<?xml version = "1.0" encoding = "UTF-8"?>
<map version = "1.4" tiledversion = "1.4.3" orientation = "orthogonal" renderorder = "right-down" width = "20" height = "20" tilewidth = "12" tileheight = "12" infinite = "0" nextlayerid = "2" nextobjectid = "1">
 <editorsettings>
  <export target = "../../android/assets/MyMap.tmx" format = "tmx"/>
 </editorsettings>
 <tileset firstgid = "1" source = "../mapassets.json"/>
 <layer id = "1" name = "Tile Layer 1" width = "20" height = "20">
  <data encoding = "csv">
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,2,3,4,5,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,11,12,13,14,15,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,21,22,23,24,25,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,31,32,33,34,35,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,41,42,43,44,45,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
</data>
 </layer>
</map>

Вот мой разочаровывающий mapassets.json (этот файл находится внутри папки assets/mapAssets в моем проекте):

{ "columns":10,
 "image":"../../assets/mapAssets/mapassets.png",
 "imageheight":128,
 "imagewidth":128,
 "margin":0,
 "name":"mapassets",
 "spacing":0,
 "tilecount":100,
 "tiledversion":"1.4.3",
 "tileheight":12,
 "tilewidth":12,
 "type":"tileset",
 "version":1.4
}

и вот как я загружаю файл .tmx:

    @Override
public void create () {
    float w = Gdx.graphics.getWidth();
    float h = Gdx.graphics.getHeight();
    camera = new OrthographicCamera();
    camera.setToOrtho(false,w,h);
    camera.update();
    tiledMap = new TmxMapLoader().load("MyMap.tmx");
    tiledMapRenderer = new OrthogonalTiledMapRenderer(tiledMap);
    Gdx.input.setInputProcessor(this);
}
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
218
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы получаете сообщение об ошибке, потому что вы сохранили свой набор тайлов в виде файла .json, но реализация libGDX в TmxMapLoader предполагает, что он в формате XML.

Вы можете увидеть это в исходном коде TmxMapLoader.

Вместо этого сохраните свой набор плиток как файл .tsx и укажите его в своем файле .tmx, и он должен работать.

Другие вопросы по теме