POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Cómo un bi-diccionario simplificó mi sistema de inventario de Unity

## BiDictionary en Unity: cómo lograr búsquedas bidireccionales O(1) para enlazar secciones de inventario y UI

Publicado el 09/09/2025

En mi proyecto Last Light desarrollando un sistema de inventario para Unity enfrenté un problema clásico: la interfaz tiene secciones de ranuras como mochila armas, mochila consumibles, armas equipadas y consumibles equipados. El InventorySystem gestiona los datos y la lógica mientras que InventoryUIController se encarga de la presentación. Para enlazar ambos utilicé inicialmente un diccionario que mapea secciones a tipos de ítem, lo que sirve bien para mostrar datos del sistema en la UI. El problema surge a la inversa cuando el jugador hace clic en una ranura y necesito conocer a qué sección pertenece. Un diccionario normal obliga a recorrer entradas para invertir la búsqueda y eso no es eficiente.

La solución fue implementar un Bi-Dictionary, una estructura de datos que permite búsquedas en ambas direcciones en tiempo constante O(1). La idea es simple y elegante: mantener internamente dos diccionarios sincronizados, uno que mapea clave a valor y otro que mapea valor a clave. Con esto se obtiene GetValue(key) para obtener el valor desde la clave y GetKey(value) para obtener la clave desde el valor, además de Add, Remove y métodos TryGet para manejo seguro. Al mantener ambas tablas actualizadas al mismo tiempo se evita coste adicional al invertir la consulta.

En términos prácticos para Unity y C# esto se traduce en una clase BiDictionary con dos Dictionary internas. Las operaciones clave son Add(key, value) que valida duplicados y añade a ambos diccionarios, TryGetValue(key, out value) y TryGetKey(value, out key) para búsquedas seguras, y RemoveByKey o RemoveByValue para eliminar sin perder sincronía. Con este patrón la UI puede preguntar rápidamente a qué sección pertenece una ranura cuando el usuario interactúa y el sistema puede resolver qué ítems mostrar por sección sin recorrer colecciones completas.

Casos de uso adicionales donde un Bi-Dictionary aporta valor incluyen mapeos acción a efecto de sonido, por ejemplo GunshotAction a GunshotSound, donde un script reproduce el sonido por acción y otro detecta el sonido y resuelve la acción inversa; o en localización cuando se necesita resolver palabras y traducciones en ambos sentidos. En general es una herramienta muy útil cuando se requieren búsquedas bidireccionales rápidas.

En Q2BSTUDIO aplicamos este tipo de patrones y buenas prácticas en proyectos de aplicaciones a medida y software a medida para optimizar rendimiento y mantenibilidad. Como empresa de desarrollo de software ofrecemos soluciones que incluyen inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi entre otros. Si tu proyecto requiere construir una arquitectura sólida para gestión de datos y UI, consulta nuestras capacidades en Desarrollo de aplicaciones y software a medida o explora nuestras soluciones de inteligencia artificial para empresas para añadir agentes IA y automatizaciones inteligentes.

Resumen de beneficios prácticos del Bi-Dictionary en sistemas de inventario y similares: búsquedas bidireccionales en O(1), sincronía clara entre representaciones lógicas y visuales, menor complejidad de código al eliminar recorridos costosos y mayor claridad al manejar eventos de UI que requieren conocer la sección asociada. Implementarlo es sencillo y puede ahorrarte tiempo y errores en proyectos de mayor escala.

Si necesitas ayuda para incorporar patrones como este en tu proyecto, optimizar rendimiento o diseñar soluciones seguras en la nube y con inteligencia de negocio, en Q2BSTUDIO combinamos experiencia técnica y enfoque a medida para entregarte resultados concretos y escalables.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio