2015-04-13 3 views
-1

Im работает над небольшим проектом в Monogame.Monogame, Lag проблем при увеличении размера карты

У меня есть небольшое раздражение. В настоящее время im загружает текстуры и т. Д. При запуске игры, только один раз.

Затем я рисую карту из файла CSV, поэтому в настоящее время я рисую карту из 3600 плиток, каждый размер плитки составляет 32x32.

Для доступа к плиткам игра должна прочитать массив Texture2D (1024 плитки внутри массива). Дело в том, что оно немного затихает. Он легко справляется с 100-страничной картой. Но на этом более крупном он просто сильно отстает?

Кто-нибудь знает, почему это может произойти? Если какой-либо код необходим, пожалуйста, дайте мне знать и плохо отредактируйте мой пост.

+0

Что касается предоставления только разумного количества плиток? Это довольно бессмысленно отображать плитки, которые не могут быть видны ... –

+0

@CommuSoft Im довольно новичок в C#. Так что я в настоящее время не знаю, как это сделать. – Taylor

+0

Вам нужно выяснить, что делает ваш код медленным, а не уточнять ваш вопрос с кодом, который вызывает замедление. Обратите внимание, что простой факт, что рендеринг 10x плиток делает ваш код медленным, недостаточно - очевидно, что в какой-то момент рендеринг большего количества объектов будет перегружать один или несколько компонентов вашей системы. Посыпайте свой код секундомерами и измерьте (не пользователь, если у вас есть доступ к профилировщику, но если вы можете получить его, это будет намного лучше). –

ответ

0

Это звучит для меня как проблема оптимизации. Наверняка вам не нужно рисовать все 3,600 картографических карточек сразу - только плитки, которые игрок может видеть? Когда они перемещаются по карте, у вас может быть событие, чтобы загрузить больше плиток и уничтожить плитки, которые вышли из поля зрения.

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

Подумайте о Minecraft. Если бы он попытался загрузить миллиарды блоков в память во время выполнения, он бы быстро упал. Вместо этого он отображает только блоки, которые игрок может видеть.

Смежные вопросы