Моя мозаичная карта не отображается в libgdx

Я провел последние пару дней, пытаясь понять, что не так с моим кодом. Я пытаюсь отобразить карту плитки (.tmx) в libgdx, но она не отображается, и просто показывает красный экран без ошибок. Я несколько раз переписывал код и всегда получал один и тот же результат.

мой код:

public class Main extends ApplicationAdapter {
SpriteBatch batch;
TiledMap map;
TmxMapLoader loader;
OrthogonalTiledMapRenderer renderer;
OrthographicCamera camera;

@Override
public void create () {
    batch = new SpriteBatch();
    loader = new TmxMapLoader();
    map = loader.load("TiledMaps/TestMap.tmx");
    renderer = new OrthogonalTiledMapRenderer(map);
    camera = new OrthographicCamera();
    camera.setToOrtho(false,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());

}

@Override
public void render () {
    Gdx.gl.glClearColor(1, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    camera.update();

    renderer.setView(camera);
    renderer.render();

    batch.begin();
    batch.end();
}

@Override
public void dispose () {
    batch.dispose();
    renderer.dispose();
    map.dispose();
}

}

Кто-нибудь может найти, что здесь происходит. У меня есть файл tmx с листом плитки в папке TileMaps в папке ресурсов Android.

Любая помощь приветствуется, спасибо заранее.


person Arcxes    schedule 02.08.2017    source источник


Ответы (1)


Если я правильно понимаю, вы пытаетесь сделать что-то сложное (отрисовка карты), но столкнулись с простой проблемой (ничего не отрисовываете).

У вас есть простая программа, в которой вы что-то рендерите? Сделали так, чтобы у вас было несколько жестко запрограммированных рендерингов тайлов? Настроили его немного больше, чтобы правильно читать и отображать первый тайл с карты? Прежде чем, наконец, расширить его, чтобы читать и отображать все плитки, когда вы знаете, что основы работают?

Вот так бы я решил эту проблему. Занимаюсь программированием в течение многих лет и просто использовал тот же процесс, чтобы заставить CreateProcess работать на C++ в Windows. Не работал в моем коде, поэтому я создал пустой проект, который просто запускает CreateProcess в notepad.exe и подправлял вещи с ответами из StackOverflow.com, пока он не заработал, теперь речь идет о постепенном добавлении других осложнений, поэтому я Я не теряюсь полностью, взяв на себя слишком много сразу.

person Domarius    schedule 02.08.2017
comment
Я не слишком уверен в том, что вы говорите, но насколько я понял, я должен начать с рендеринга только 1 плитки, а затем двигаться дальше? Если это то, что вы имели в виду, я понятия не имею, как это сделать с помощью libgdx api, и весь код, который я предоставил, работал несколько месяцев назад. @Домариус - person Arcxes; 02.08.2017
comment
Я почти уверен, что ваша проблема не связана с libgdx, это скорее общая проблема решения проблем. Логика подсказывает, что если ваш код не изменился между тем и сейчас, что-то изменилось, и вам нужно просто провести пробы и ошибки, чтобы сузить круг возможных изменений. То, что я вам здесь говорю, не ответ на проблему, а то, как найти ответы на проблемы, что более важно :) Если вы хотите отрендерить всю карту, но понятия не имеете, как отрендерить даже один тайл сам по себе, это серьезный шаг, который вы пропустили. Сначала нужно изучить основы. - person Domarius; 02.08.2017
comment
Я заметил, что у libgdx есть форум, вы писали там? Но, что еще более важно, должны быть руководства о том, как добиться рендеринга чего-либо на экране, вы должны им следовать, возможно, это будет решающий шаг в настройке того, что вы пропустили, для правильного рендеринга. - person Domarius; 02.08.2017
comment
Я уже не могу правильно отображать вещи, я могу получить что угодно, но не мой файл tmx, и код, который я использую, - это тот же код, который работал раньше, поэтому я не понимаю, как обучение рендерингу одного тайла поможет мне, я что-то упустил? - person Arcxes; 02.08.2017
comment
Что ж, как я уже сказал, что-то изменилось между тем и сейчас, и вы должны разбить проблему на части, устранив все то, чем она не может быть, пока у вас не останется над чем работать. Так что, если вы, безусловно, можете что-то визуализировать, проблема находится где-то между возможностью что-то визуализировать и визуализацией карты. - person Domarius; 02.08.2017
comment
Давайте разберемся — знаете ли вы, неправильно ли он загружает карту или просто неправильно ее отображает? Если вы не знаете какой, вам нужно узнать. Вам нужно проверить загрузку, возможно, распечатав числовое значение каждой плитки (в вывод журнала) или даже просто количество плиток, чтобы увидеть, действительно ли он загружает данные. - person Domarius; 02.08.2017
comment
Если это проверит, то проблема может быть с рендерингом. В этом случае поможет просто получить рендеринг одного тайла, и это может упростить ситуацию, если вы жестко запрограммируете содержимое карты, чтобы оно было похоже на 1 или 2 тайла. Я думаю, что файл TMX находится в формате XML, поэтому не должно быть слишком сложно напечатать что-то в коде. - person Domarius; 02.08.2017
comment
Я проверил, все ли загружается, и это было так, и мне потребовалось небольшое тестирование, чтобы выяснить, что проблема заключалась в картах, которые я использовал, а не в коде. Теперь, чтобы узнать, почему мои карты больше не работают - person Arcxes; 02.08.2017
comment
Фантастика, рад это слышать :) Удачи в остальных поисках. - person Domarius; 03.08.2017