Demo4 Trading
Examples/Demo4 Trading/TradingDemo.unity
Это демо показывает перенос между разными моделями, экономику и экипировку с фиксированными слотами в одной сцене.
Что показывает демо
- инвентарь игрока, инвентарь торговца и слоты экипировки
- конвертация между разными моделями предметов
- проверку цен и денег на этапе переноса
MappedSlotInventoryDataBindingдля экипировки
Как устроено
Данные и экономика:
Data/PlayerData.csData/MerchantData.csData/TradingEconomyManager.cs
Адаптеры и конвертация:
Adapters/TradableSoAdapter.csAdapters/TradableItemAdapterModelAdapter.csConverters/ModelItemAdapterConverter.csConverters/MerchantItemAdapterConverter.cs
Bindings:
PlayerInventoryDataBinding.csMerchantInventoryDataBinding.csEquipmentInventoryDataBinding.cs
flowchart LR
MerchantData["MerchantData"] <--> MerchantBinding["MerchantInventoryDataBinding"]
MerchantBinding <--> MerchantUI["Merchant Inventory UI"]
PlayerData["PlayerData"] <--> PlayerBinding["PlayerInventoryDataBinding"]
PlayerData <--> EquipmentBinding["EquipmentInventoryDataBinding"]
MerchantBinding -.- Converters["Converters"]
PlayerBinding -.- Converters
MerchantBinding === Domain["TradingHelper / economy checks"]
PlayerBinding === Domain
PlayerBinding <--> PlayerUI["Player Inventory UI"]
EquipmentBinding <--> EquipUI["Equipment UI"]
Как работает
Покупка у торговца:
- Перетаскивание начинается из инвентаря торговца.
- В момент отпускания конвертер готовят представление предмета для инвентаря игрока.
- Валидация проверяет деньги и ограничения сделки.
- После успешного переноса bindings обновляют данные игрока и торговца.
- Побочные эффекты меняют золото и другие связанные значения.
Экипировка:
- Предмет перетаскивается в фиксированный слот.
EquipmentInventoryDataBindingпроверяетPrimaryAdapterи специфичный для каждого слотаcanDrop.- При успехе конкретное поле в
PlayerDataсинхронизируется с нужным слотом.
Когда брать этот пример за основу
- нужны разные модели данных по разные стороны границы переноса
- нужна конвертация предметов при переносе
- нужен корректный обмен между инвентарями с разными adapter-моделями
- нужны цены, деньги и commit-time проверки
- нужны фиксированные слоты поверх обычного инвентаря
Связанные страницы: