Demo3 Craft
Examples/Demo3 Craft/CraftDemo.unity
Este es un ejemplo de inventario indexado por slot y crafting donde la UI se sincroniza con arrays de datos fijos, no con una lista.
Qué muestra la demo
SlotIndexedInventoryDataBinding- mesa de crafting y slot de resultado
- límite máximo de stack por slot
CraftResultDataBindingcomo tipo de inventario personalizado para tomar el resultado de crafting
Cómo está estructurada
El punto central de la lógica es:
Crafting/CraftingManager.cs
Almacena:
_hotbarItems_inventoryItems_craftTableItems- lista de recetas
- resultado actual y multiplicador de crafting
La UI está dividida en cuatro bindings independientes:
MainInventoryDataBindingHotbarDataBindingCraftTableDataBindingCraftResultDataBinding
Cómo funciona
Slots normales:
- El binding enumera los índices ocupados mediante
GetOccupiedSlots(). AddToSlotData(...)yRemoveFromSlotData(...)llaman a métodos deCraftingManager.- En
Awake(), los inventarios llaman aSetMaxStackSize(CraftingManager.MaxItemsPerSlot)para limitar la cantidad de objetos por slot.
Crafting:
- Cambiar la craft table actualiza
_craftTableItems. CraftingManager.RefreshCraftResult()busca una receta adecuada.CraftResultDataBinding.OnReloadUI()muestra el resultado y configura el paso de drag.- Cuando el usuario toma el resultado,
OnItemRemovedFromUI(...)llama aConsumeCraftIngredients(...).
Es un buen ejemplo de slot de solo lectura que no acepta drop entrante, pero crea un objeto según lógica externa que se puede extraer.
Cuándo usar este ejemplo como base
- necesitas un inventario con índices fijos
- necesitas crafting
- necesitas un slot de salida con un efecto después de extraer