Bitácora 21 Arrastrar y Soltar

Bitácora 21 Arrastrar y Soltar
16 de septiembre de 2025 — Inventory Highlight y sistema de selección
Objetivo: reemplazar la lógica de arrastrar y soltar poco fiable por un sistema seguro para prefabs basado en clic para seleccionar que permita mostrar tooltips y retroalimentación visual del objeto activo.
Qué intentamos y falló: implementamos el flujo completo de IBeginDragHandler, separamos items del grid durante el arrastre, deshabilitamos CanvasGroup.blocksRaycasts = false al iniciar el drag. Resultado: fallo silencioso, sin logs y sin trigger de OnBeginDrag. Tras analizar jerarquías de prefabs, máscaras de canvas y bloqueadores de raycast, identificamos que el debugging exigía pensar como ingenieros de sistemas.
Causa raíz: un CanvasGroup en la raíz de itemEntryPrefab estaba bloqueando raycasts. Los clicks en tooltip funcionaban porque se procesaban antes del reparenting, pero OnBeginDrag nunca se disparaba.
Qué construimos y funcionó: fusionamos tooltip y highlight en un script seguro para prefabs. InventoryItemInteraction ahora gestiona el Tooltip mediante ItemTooltipManager, el highlight con highlightBox.SetActive(true) y lleva un singleton para el item seleccionado. Todos los logs se etiquetan con [Anteater] para aislar la consola.
Confirmado: al hacer clic en un item aparece el tooltip, se activa el highlight, se limpia el highlight anterior y la consola muestra logs [Anteater]. La retroalimentación visual es modular y limpia.
Próximos pasos: añadir lógica de compatibilidad por slot, efectos de hover, deselect en click de slot o doble clic para equipar, revisar la lógica de drag con respeto total a prefabs y construir un dashboard de debug.
17 de septiembre de 2025 — obediencia de slots, resurrección de tooltips y la mitología de Anteater
Resumen: día de sistemas profundos. Debugueamos el escaneo de slots, parcheamos la lógica de arrastre, rehíbridamos la visualización de tooltips y fortalecimos interfaces seguras para prefabs en múltiples tipos de item.
Arreglos clave: refactor del scan de slots, reemplazando barridos superficiales por GetComponentsInChildren(true) para soportar contenedores anidados. Añadimos logs [Anteater] para slots faltantes y [Butterfly] para validaciones. Se parcheó GearTabDropTarget.cs para reparentear items al soltar y se invoca GearSlotUI.AssignItemFromInteraction() para mantener obediencia de overlays y tooltips.
Resurrección de tooltip: GearSlotUI ahora enlaza InventoryItemInteraction al panel de Tooltip del GearItem y actualiza correctamente la sprite de overlay. Añadimos logs para orden de siblings, máscaras de canvas y metadatos de import de sprites.
Lógica de registro de slots: InventorySlotUI ahora incluye AssignItem(), HasItem(), GetItem() y GetAsset(). El handler de drop soporta swap de items y restauración de originales. Todos los assets tipo ScriptableObject se parchearon para implementar GetItem() de forma segura, devolviendo null cuando corresponde para mantener la seguridad del prefab.
Errores encontrados y resueltos: AssignItem faltante en InventorySlotUI, tooltip que no se actualizaba tras el drop, lógica de escaneo superficial y overlay que no renderizaba por orden de siblings y masking. Lección aprendida: la seguridad de prefabs es sagrada, la lógica de slots debe ser profunda y modular, los tooltips son frágiles y las etiquetas de debug importan.
18 de septiembre de 2025 — Overhaul de GearSlotUI y sistema de arrastre del inventario
Estado inicial: compartíamos lógica de drag entre inventario y panel de equipados. GearSlotUI soportaba drag-and-drop pero provocaba caos de escalado en prefabs; InventorySlotUI estaba estable y segura.
Ensayos y experimentos: inyectamos items listos para drag en slots de inventario mediante LoadItem() que instanciaba el prefab con contexto, OnDrop soportó swap y AssignItem obedeció contexto. En GearSlotUI el prefab escalaba de forma errática durante el drag, el rectTransform no se reseteaba al inicio del arrastre y RefreshSlot(null) limpiaba overlays prematuramente.
Arquitectura dual propuesta: capa de fondo para visual idle y toggle del prefab icon hasta que inicia el drag. Solución de escalado: forzamos anchors, pivot y sizeDelta y usamos itemIcon.rectTransform.sizeDelta para mantener fidelidad.
Regresiones y fallos: items desaparecían por llamadas Hide() incondicionales en Start, drag de gear desaparecía después del drop por RefreshSlot(null) durante el drag. Se consideró rollback a backup estable, pero se decidió preservar la lógica funcional del inventario e aislar los cambios al panel de equipados.
Pivot estratégico: eliminamos la lógica de drag de GearSlotUI, quitando IBeginDragHandler, IDragHandler e IEndDragHandler y mantuvimos OnDrop para inyección de inventario a gear. Propusimos un sistema de botón para unequip que se puede vincular a un overlay, pero se dejó en segundo plano para priorizar estabilidad.
Estado final: la lógica de drag del inventario está completamente restaurada y segura para prefabs. GearSlotUI quedó libre de drag, estable y visualmente limpia. Confirmamos sistema dual de background sprite más toggle de prefab, tooltips, asignación de slots y utilidades de debug intactas. Empecé a etiquetar debugs con palabras únicas para cortar el ruido de la consola, lo que aceleró enormemente la resolución.
Reflexión final: costó tiempo y esfuerzo adaptar arrastrar y soltar al panel de equipados, al final se priorizó la estabilidad y la modularidad. Aprendimos mucho y el proyecto empieza a sentirse como el inicio de un juego real.
Sobre Q2BSTUDIO: en Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones personalizadas, inteligencia artificial aplicada a empresas y ciberseguridad. Ofrecemos servicios integrales que incluyen desarrollo de software a medida y aplicaciones a medida, integración de agentes IA y consultoría en ia para empresas, así como soluciones de inteligencia artificial y power bi para inteligencia de negocio. También brindamos servicios de ciberseguridad y pentesting, y gestión de infraestructuras en servicios cloud aws y azure para garantizar despliegues escalables y seguros.
Palabras clave: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.
Comentarios