XTiled в MonoGame - импортировать карты TMX в MonoGame

Я создал карту TMX в редакторе карт Tiled и использую XTiled для загрузки карты в MonoGame. В проекте xna карты загружаются безупречно, а в MonoGame - нет. Я создаю файл.tmx с проектом xna (в проекте содержимого), а затем создаю свой моногамный проект, такой как файл.xnb со всеми установленными ссылками. Сборка выполнена успешно, но карта не загружается.

Буду признателен, если кто-нибудь скажет мне шаги по загрузке карты TMX в Monogame или предоставит мне несколько учебных пособий для этого.

Заранее спасибо.

1 ответ

Решение

В любом случае, я могу заверить вас, что можно загружать мозаичные карты, используя xTile в MonoGame. Я сделал это для одной из наших игр под названием Rock Run.

Хитрость заключается в том, чтобы перекомпилировать xTile с зависимостями MonoGame. Вот фрагмент нашего кода загрузки уровня, который может помочь:

string levelPath = string.Format (@"Content\level{0:00}.tbin", level);
var stream = TitleContainer.OpenStream(levelPath);
_map = xTile.Format.FormatManager.Instance.BinaryFormat.Load(stream);

_mapDisplayDevice = new XnaDisplayDevice(Content, GraphicsDevice, ScreenScale);
_map.LoadTileSheets(_mapDisplayDevice);

var viewportSize = new xTile.Dimensions.Size(ScreenWidth, ScreenHeight);
_viewportRectangle = new xTile.Dimensions.Rectangle(viewportSize);

Здесь есть несколько вещей, на которые стоит обратить внимание. Мы не потрудились предварительно скомпилировать содержимое в файлы XNB. Они просто экспортируются из редактора карт в виде бинарных (tbin) файлов и добавляются как прямой контент. Хотя я не думаю, что это ваша проблема, и по памяти нам пришлось внести небольшие изменения, чтобы заставить ее работать таким образом. Таким образом, использование файлов XNB должно работать так же хорошо.

Во-вторых, мы используем TitleContainer для чтения файла в виде потока, потому что на устройствах Android файлы хранятся в изолированном хранилище, и вы не можете найти их при обычных операциях файловой системы.

Все остальное должно быть достаточно понятным, если вы следовали уроку.

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