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 файлы хранятся в изолированном хранилище, и вы не можете найти их при обычных операциях файловой системы.
Все остальное должно быть достаточно понятным, если вы следовали уроку.