Demo1 Inventories
Examples/Demo1 Inventories/InventoriesDemo.unity
Это самый базовый пример ассета. Он показывает inventory без отдельной игровой логики, экономики или world-интеграции.
Что показывает демо
- простой список
ItemExampleSO ListInventoryDataBinding<ItemExampleSO, ItemAdapterSoAdapter>- загрузку списка в
UniversalInventory - обратную синхронизацию UI -> данные
- локальные переопределения
CanStartDragиCanDrop
Как устроено
Основные части:
ItemExampleSO.cs— данные предметаAdapters/ItemAdapterSoAdapter.cs— адаптер UI-слояDataBindings/ItemsSOInventoryDataBinding.cs— binding между списком данных и inventorySO/Rules/*— пример rule preset
flowchart LR
Data["List<ItemExampleSO>"] <--> Binding["ItemsSOInventoryDataBinding"] <--> UI["UniversalInventory"]
Сам binding читает список, создаёт адаптеры и синхронизирует изменения обратно в тот же список.
Как работает
GetItems()отдаёт списокitems.ReloadUI()строит изначальный UI-стеки из этого списка черезCreateAdapter(...). Эту функцию можно вызывать по событиям когда что то изменилось в данных для полной перерисоки, но дляListInventoryDataBindingне сохраняется позиция.- После успешного переноса инвентарь вызывает у binding соответствующие
AddToData(...)иRemoveFromData(...)- обновляет исходный список.
Дополнительно пример показывает, где удобно добавлять простые локальные ограничения:
CanStartDrag(...)— запретить перетаскивание из конкретного инвенторяCanDrop(...)— запретить перетаскивание в конкретный инвентарь
Когда брать этот пример за основу
- нужен первый инвентарь без сложной модели