Хранение данных для этапа в единстве c# - PullRequest
0 голосов
/ 02 апреля 2020

Поэтому я пытаюсь создать игру VR-лабиринт в единстве с фиксированной картой, используя кубы по умолчанию 1x1x1 и скрипт c# для хранения картографических данных. Я немного новичок в такого рода вещах, поэтому прежде чем двигаться дальше, я хотел спросить более опытных людей, какой метод я должен использовать для хранения данных для структуры лабиринта. В настоящее время я смотрю на лабиринт 100x100x100, и моя идея состояла в том, чтобы использовать 2d массивы с 'y' или 'n' в каждом индексе, который определяет, имеет ли это местоположение блок или нет, и если он это делает, он берет индекс как векторные значения и генерирует игровой объект в этом месте. Я чувствую, что есть определенно лучшие методы, которые используют игры вроде Minecraft, но я понятия не имею, как они работают. Любая помощь будет оценена. Спасибо!

1 Ответ

0 голосов
/ 02 апреля 2020

В Minecraft хранятся не все данные карты. сохраняется только один chunk , то есть 16 * 16 * (высота карты) = 65536 блоков, значение seed и блоки, которые пользователь изменил. Используя это начальное значение, карта генерируется по мере необходимости.

Но в вашем случае не похоже, что есть какая-то особенность генерации карты. Поэтому я думаю, что было бы достаточно сохранить кортежей , например List<(int x, int y, int z)> Если блок, содержащий стену, содержит больше пустых пространств, вы можете сохранить координаты блоков стены, например (0, 0, 0), (0, 0, 1), ... Если пробел больше места, затем сохраните координаты пробелов.

Что касается сохранения этого списка, вы можете рассмотреть способ JSON Сериализация , или если вы хотите сохранить только Список кортежей, вы можете создать свой собственный способ хранения и анализа его с помощью .txt файлов.

Надеюсь, этот ответ поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...