Создадим систему инвентаря и работы с предметами в двухмерной Pixel Art RPG игре на движке Unity. Рассмотрим проектирование базовых абстракций, создание интерфейса инвентаря и визуализацию предметов.
Проектирование системы предметов
Создадим папку Scripters/Items для хранения скриптов, связанных с предметами. Создадим абстрактный интерфейс IItem со свойствами: readonly string ItemDescription (описание предмета) и int ItemId (идентификатор предмета). Идентификатор пока оставим в интерфейсе. Реализуем интерфейс с помощью базового класса BaseItem, унаследованного от MonoBehaviour. Добавим поля ItemId и ItemDescription, отображаемые в инспекторе Unity. Создадим папку Assets/Items для хранения префабов предметов. Создадим префабы для топора и свиньи.
Создание интерфейса инвентаря
Создадим Canvas для интерфейса инвентаря, расположив его слева с фиксированной шириной 200 пикселей. Для организации ячеек используем Scroll View, заблокируем горизонтальную прокрутку, настроим вертикальную. Добавим Content Size Fitter для автоматической подстройки высоты под содержимое и GridLayout Group для размещения элементов в сетке 50×50 пикселей. Оформим фон и элементы инвентаря.
Реализация инвентаря и визуализация предметов
Создадим скрипт InventoryManager с публичным списком List<IItem> items для хранения предметов. Этот скрипт будет отвечать за рендеринг предметов. Создадим префаб InventoryItem для визуализации каждого предмета: текстовое поле для имени и поле для иконки. InventoryManager будет создавать экземпляры InventoryItem для каждого предмета из списка items и размещать их в Scroll View. Перед рендерингом удалим все дочерние объекты контейнера. Добавим в InventoryItem спрайт для иконки и настроим отображение текста. Перед запуском игры проверим все ссылки на переменные.
Дальнейшие планы
В дальнейшем реализуем подбор и выброс предметов, сортировку по категориям, систему выбора активного предмета и взаимодействие с ним в игровом мире, а также анимацию открытия/закрытия инвентаря.
Создана базовая функциональность системы инвентаря, включая проектирование системы предметов и визуализацию в интерфейсе. Планируется расширить функционал, добавив взаимодействие с игровым миром и улучшенный пользовательский интерфейс.