Как создать простой инвентарь в Unity
Инвентарь — одна из важнейших деталей игр многих жанров. Однако создать его может быть не так просто, как кажется на первый взгляд.
vlada_maestro / shutterstock
Чтобы реализовать инвентарь, нужно уже уметь создавать простые игры и работать с интерфейсами.
Как создать окно инвентаря
Добавьте на карту элементы Canvas с именем InventoryCanvas и Panel, в котором будут находиться остальные элементы:
В компоненте Canvas Scaller укажите в UI Scale Mode вариант Scale With Screen. Так размер инвентаря будет зависеть от разрешения экрана. Внутри Panel создайте еще одну панель и назовите ее Items:
Поменяйте цвет и добавьте компонент Grid Layout Group — он позволит расположить компоненты по сетке. Можно указать отступы и размер клеток. Затем добавьте название окна — это еще одна панель с текстом.
Теперь пора приступить к созданию ячеек. Внутри панели Items создайте кнопку и назовите ее Slot. Внутрь кнопки добавьте Image и назовите этот элемент Icon — в нем будет отображаться спрайт предмета. Также создайте пустой скрипт Slot.cs, а потом сохраните слот как префаб.
После этого можно создать несколько копий ячейки, которые автоматически расположатся по сетке.
Теперь нужен скрипт, который будет отвечать за открытие и закрытие инвентаря и другой функционал, — Inventory.cs. Прикрепите его к InventoryCanvas.
Вот как это выглядит:
Как создать предмет
Рассмотреть создание предметов можно на примере брони для танка. Она будет выглядеть так:
А на танке крепится так:
Для начала перетащите спрайт на карту и добавьте ему коллайдер с триггером:
Триггер нужен, чтобы его объект можно было «подбирать», наезжая на него. Добавьте скрипт Item.cs:
Вот как будет выглядеть подбор предмета:
Пока скрипт Items.cs не создан, поэтому попытка его вызова может привести к ошибке — закомментируйте строку obj.GetComponent<Items>().AddItem (index);
Как подобрать предмет
Создайте скрипт Items.cs и добавьте его персонажу:
Перед запуском игры нужно немного изменить персонажа. Создайте пустой объект и перетащите ему все компоненты персонажа. Сам же спрайт поместите внутрь этого объекта. Также нужно создать объект Armor — ему будет задаваться спрайт текущей брони:
Как добавить предмет в инвентарь
Теперь нужно сделать так, чтобы подобранные предметы отображались в инвентаре. Для этого добавьте вот такой код в скрипт Slot.cs:
Чтобы новый скрипт работал, нужно добавить новый функционал в Inventory.cs:
Вот как выглядит инвентарь с предметами:
Как надеть предмет
За надевание предмета будет отвечать скрипт Items:
Теперь метод Equip () нужно прикрепить к слоту и указать его номер. Первая ячейка должна идти под номером 0, вторая — под 1 и так далее:
Теперь пора проверить, как всё это работает:
Заключение
Инвентарь — достаточно сложный игровой компонент. В этой статье был разобран лишь минимальный функционал. Кроме него, можно реализовать еще много всего интересного: влияние предметов на характеристики персонажа, выкидывание предметов, передачу их другим игрокам, лут и многое другое.
Если вы хотите лучше изучить работу с Unity, записывайтесь на курс «Профессия разработчик игр на Unity». Вы научитесь создавать все основные компоненты для игры и сможете работать над крупными проектами.