Игрули (GameDev)

Создание grid сетки на Unity 5 для ресторатора

При создании ресторатора мне потребовалось реализовать пол, состоящий из многих кубиков, при нажатии на которые появлялось бы меню выбора предметов, которые можно поставить на данный участок. Конечно, можно было бы реализовать просто с помощью обычных позиций (x,y,z). Так и было изначально, но я столкнулся с 3 НО

  1. Это было неудобно. Постоянно прописывать объектам координаты в плоскости всей карты — трудно. Разработчики игр поймут, а для обычных обывателей поясню: Представьте что вам нужно поставить кружку кофе на столик в ресторане, а вместо номера столика вам говорят географические кординаты. Согласитесь, звучит даже абсурдно.
  2. Это было непроизводительно. Нагрузка и просадки кадров были постоянно. Чтобы проверить не стоит ли уже что-нибудь на этом блоке земли, вам нужно перебрать почти каждый пиксель блока, размером 10×10 (В моей реализации). То есть для проверки одного блока нужно 100 ходов цикла. И это в 2д проекции. В 3д было бы еще * на n-высоту. А в случае grid — вам нужно просто посмотреть что находится на n-блоке в мапе.
  3. Стены. Стены растут вверх. С ними создание блока стало еще сложнее. А они тоже должны быть интерактивными, чтобы вы смогли повесить картину или зеркало на стену.

Разработка ресторатора. Создание грид сетки на Unity 5

Создание grid сетки на Unity 5 стало необходимым. Гайдов в интернетах я не нашел интересных, лишь один или два вопроса на стаке. Решил сделать сам. И, вроде бы получилось. Эффективность и удобство использования ++

Что же я сделал?

Я создал класс GridController (c#). Вот два основополагающих метода в этом классе:

 

Сразу скажу, что весь класс целиком вы можете найти в моем репозитории гита

Теперь давайте разберем что тут написано на пальцах.

Метод spawnFloor принимает Объект в качестве текстуры. Это та самая текстура пола, которая клонируется при создании пола, другими словами — текстура пола.

floor — это Dictionary (key-value хранилище по другому). Создается вот так:

public static Dictionary<string, GameObject> floor = new Dictionary<string, GameObject> ();

И в него под определенным id добавляется значение null, что означает что в блоке N ничего не находится и туда можно что-то поставить.

Та же ситуация с walls. Буквально ctrl+c ctrl+v. Только стены то две, поэтому и циклы разделены.

Теперь вам достаточно просто проверять нажатие на название, и если в нем содержится wall_ или floor_ то это стена и пол соответственно.

При размещении объекта реплейсим значение в нашей Dictionary. И забиваем его объектом, вместо null.

На этом создание grid сетки на Unity 5 можно считать завершенным. В следующих статьях я опишу создание объектов по grid сетке и взаимодействие с этими объектами, а так же создание этих объектов через меню.

Отправить ответ

1 Комментарий на "Создание grid сетки на Unity 5 для ресторатора"

avatar
  Subscribe  
newest oldest most voted
Notify of
trackback

[…] (Подробнее про grid сетку можете прочитать в статье «Создание GRID сетки на Unity«). Скажем, вы создали прекрасный пуфик зеленого […]