You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Назначение: Главный менеджер инвентаря. Отвечает за хранение предметов, управление лимитами (максимальные стаки, вместимость слотов) и автоматическое сохранение прогресса. Поддерживает работу как с физическими слотами (SlotGrid), так и с общим списком предметов (Aggregated).
Поля (Inspector)
Поле
Описание
Database
Ссылка на InventoryDatabase для получения информации о предметах и их максимальных стаках.
Storage Mode
Тип хранения: Aggregated (общий безразмерный список) или SlotGrid (ограниченная сетка слотов).
Slot Count
Количество ячеек (используется только если выбран режим SlotGrid).
Save Key
Уникальный ключ для SaveProvider, по которому инвентарь будет сохранять данные.
Auto Load / Auto Save
Автоматически загружать данные при старте и сохранять при каждом изменении содержимого.
API
Метод / Свойство
Описание
int TotalItemCount { get; }
Возвращает общее количество всех предметов в инвентаре.
int GetCount(int itemId)
Возвращает текущее количество предметов с указанным ID.
int AddItemByIdAmount(int itemId, int amount)
Добавляет предметы в инвентарь (если есть место). Возвращает реально добавленное количество.
bool TryConsume(int itemId, int amount)
Пытается списать (потратить) указанное количество. Возвращает true, если предметов хватило.
void Clear()
Полностью удаляет все предметы из инвентаря.
События (Unity Events)
Событие
Аргументы
Описание
OnInventoryChanged
(нет)
Вызывается при любом изменении инвентаря (добавление, удаление, перемещение). Удобно для обновления UI.
OnItemAdded
int itemId, int amount
Вызывается при успешном добавлении предмета.
OnItemRemoved
int itemId, int amount
Вызывается при успешном удалении/трате предмета.
OnCapacityRejected
int itemId, int amount
Вызывается, если инвентарь полон и предмет не влез.
Примеры
Пример No-Code (в Inspector)
Вы можете привязать UI-текст или звуковой эффект к событию OnInventoryChanged прямо в инспекторе, чтобы обновлять интерфейс каждый раз, когда игрок что-то подбирает.
Пример (Код)
// Проверяем, есть ли у нас 5 монет, и если да — тратим ихif(InventoryComponent.I.GetCount(10)>=5){InventoryComponent.I.TryConsume(10,5);Debug.Log("Покупка совершена!");}