Доброго времени суток. Сегодня я хочу рассказать Вам, как создать систему строительства, как в популярных играх Rust, Sims или в любых других, где реализована такая возможность, в популярном движке для разработки игр Unity3D.
Я сам начал изучать Unity не так давно, около 3-х месяцев назад. Поэтому данная статья является некой рефлексией, полученных мною знаний на данную тему. Хочу заметить, реализованная мною система не идеальна, имеет недостатки, и наверно целью данной статьи является донести саму идею, логику создания системы строительства, а не просто ее реализация.
Общая идея работы такая:
- Открывается инвентарь
- Выбирается нужный предмет
- Предмет спавнится
- Закрывается инвентарь
- Предмет можно свободно перемещать по карте
- Нажатием ЛКМ предмет ставится
Данная статья будет разделена на несколько частей.
Итак, начнем.
Часть первая. Создание UI.
После кучи пересмотренных, видео, форумов, статей на английском и не только языках, я преступил к разработке системы строительства.
Первым делом я решил создать интерфейс, возможно это не совсем правильно с точки зрения разработки в целом, но мне легче, когда я вижу, что я делаю и для чего.
Сначала создадим Canvas
Canvas является неким холстом для интерфейса, на нем можно располагать кнопки, панели, слайдеры и прочее. Подробнее о нем здесь.
Для удобства переименуем Canvas в UI
Далее в UI создается объект Panel.
Правой кнопкой по UI: UI -> Panel.
Panel является объектом отображения графической информации, на панель можно накинуть картинку или просто покрасить в нужный цвет.
Для удобства переименуем Panel в Grid почему так узнаете позже.
В нашем случае Grid будет служит контейнером для других Panel и нам не нужно видеть его содержимое. Поэтому удаляем компонент Image.
Далее для объекта Grid создаем дочерние Panel, это и будут наши ячейки инвентаря, однако для того чтобы инвентарь приобрел вид инвентаря, для объекта Grid нужно добавить компонент Grid Layout Group.
Проще говоря, данный компонент создает сетку, по которой будут выстраиваться дочерние объекты. Подробнее о нем здесь.
У данного компонента много различных свойств.
Свойство Padding отвечает за отступ с того края, с которого вы указали. Допустим в Left мы укажем 10, соответственно ячейки будут отодвинуты на 10 пикселей от левого края.
Свойство Cell Size, пожалуй, самое главное свойство, оно отвечает за размер ячеек.
Spacing данное свойство отвечает за расстояние между ячейками.
Start Corner с помощью данного свойства можно определить с какого угла будет начинаться сетка.
Start Axis определяет как будут добавляться новые ячейки, по вертикали или горизонтали.
Child Alignment выравнивание дочерних объектов.
Сonstraint определяет количество столбцов и строк, можно выбрать, чтобы столбцы и строки добавлялись автоматически, или поставить определенное число.
В итоге должно получится что-то на подобии этого.
На этом первая часть статьи подходит к концу. В следующей части реализуем регистрацию нажатия по ячейке инвентаря.
Если понравилось, подписывайтесь, комментируйте, ставьте лайки.