12. Guarda datos de tu economía en una DataTable propia
Construye este ejemplo en tu proyecto de Unreal y comprueba el resultado en cada paso.
En esta página
Vas a crear una estructura de fila que encaja con tu juego, leer sus campos con nodos nativos de Unreal y validar los números antes de distribuir el asset.
A. Define la estructura y crea la tabla
- Detén Play. En el Content Browser abre Add → Blueprints → Structure y crea ST_EconomyRow.
- Añade Price y Reward, ambos de tipo Scientific Number; Category de tipo Gameplay Tag; y Label de tipo String. Configura etiquetas como
Game.EconomyyGame.Shopen los Gameplay Tags del proyecto, si aún no existen. - Dentro de Data, elige Miscellaneous → Data Table. Selecciona ST_EconomyRow como estructura de fila y llama a la tabla DT_MiEconomia.
- En el editor de la tabla, crea las filas
DefaultsyUpgrade. En el campo de texto único, escribe1e3para Defaults.Price,2.5e1para Defaults.Reward,2.5e2para Upgrade.Price y0para Upgrade.Reward. Elige Category con el selector de Gameplay Tag y completa Label. - Guarda la tabla y usa su opción nativa Export para exportarla como CSV y JSON. Conserva el CSV exportado como plantilla: Unreal escribe el encabezado de fila y la serialización exacta de Gameplay Tag. Si editas Price en el archivo, cambia solo esa celda y usa Import o Reimport en el editor de la tabla. Revisa los datos y guarda los cambios.
Qué debes ver: dos filas con tus cuatro campos. Defaults.Price representa 1000, Defaults.Reward representa 25 y Upgrade.Price representa 250. La estructura es tuya: puedes cambiar nombres, añadir más campos FScientificNumber o incluirlos en estructuras y contenedores anidados.
Al editar el CSV: para esta práctica, abre el archivo con Notepad++ u otro editor de texto y conserva una copia del exportado original. Cambia solo el número dentro de (Base=...,Exponent=...). Conserva las comas y las comillas: las comillas dobles dentro de un campo entrecomillado, como ""Game.Economy"", son necesarias. Si usas una hoja de cálculo y todo aparece en una sola columna, no lo vuelvas a guardar así: impórtalo seleccionando la coma como separador y comprueba las columnas antes de exportar. Si Unreal informa Too few cells on row, corrige el CSV y vuelve a importar antes de guardar la tabla.
B. Lee una fila con nodos nativos de Unreal
- Crea un Actor Blueprint llamado BP_MiTabla y coloca una instancia en el nivel. En My Blueprint, crea una variable Tabla de tipo Data Table Object Reference y otra variable Fila de tipo Name. Compila; después, en Class Defaults asigna
DT_MiEconomiaa Tabla yDefaultsa Fila. - En Event Graph, conecta la ejecución de Event BeginPlay a la entrada de ejecución de Get Data Table Row. Conecta Tabla al pin Data Table y Fila al pin Row Name.
- Conecta Out Row a Break ST_EconomyRow. Conecta Price a Value de To Fixed String y el Return Value a In String de Print String. Usa Decimal Places = 2. Conecta la ejecución de Row Found a la entrada de ejecución de To Fixed String, y su salida de ejecución a Print String. No añadas Branch para Row Found.
- Conecta el pin de ejecución Row Not Found a otro Print String con
No se encontró la fila Defaults. - Compila, guarda y pulsa Play.
Resultado esperado: se imprime 1000.00. Cambia Fila a Upgrade y repite: aparece 250.00. Prueba FilaInexistente: se ejecuta la ruta Row Not Found y no se imprime un número como válido.
C. Pasa el campo a un componente Safe
- En el Actor de tu cartera, confirma que Wallet es un Scientific Number Safe Value Component.
- En el recorrido de nueva partida, conecta la ejecución de BeginPlay a Get Data Table Row, con DT_MiEconomia y Row Name
Defaults. - Conecta Out Row a Break ST_EconomyRow y Price a New Value de Try Set Value. Conecta Wallet a Target y el pin de ejecución Row Found de Get Data Table Row directamente a Try Set Value.
- Comprueba el bool de Try Set Value con Branch antes de continuar la inicialización. En False, pasa Out Error a Print Scientific Number Error. Conecta Row Not Found de Get Data Table Row a un mensaje de fila inexistente y detén esa ruta.
Resultado esperado: Wallet contiene 1000. Si Price tiene un error numérico tipado, Try Set Value devuelve False y conserva el saldo anterior. Para una partida guardada, usa la ruta de carga de la sección 11; no vuelvas a aplicar el saldo inicial.
D. Importa, exporta y valida con Unreal
- Usa el CSV que exportaste en el editor como plantilla de importación; conserva el encabezado y el formato de Gameplay Tag escrito por Unreal. El editor nativo también permite exportar e importar JSON. Revisa la tabla después de cada importación y guárdala desde su editor cuando termines. Si Unreal muestra errores de importación, corrige el archivo y vuelve a importar. Validate Assets comprueba el contenido que está almacenado ahora; no sustituye la revisión de errores de importación.
- En el Content Browser, haz clic derecho sobre DT_MiEconomia y elige Asset Actions → Validate Assets. Revisa el resultado en el informe de validación de Unreal.
El validador del editor de Scientific Number Tools busca campos reflejados FScientificNumber en cualquier estructura de fila y recorre estructuras anidadas, arrays, sets y claves y valores de mapas. Un error identifica asset, fila, ruta completa de propiedad y motivo numérico. Un valor con error tipado, como Overflow, es contenido numérico inválido; una representación malformada recibe un diagnóstico distinto. El validador no cambia los datos ni impone reglas de juego, como que un precio sea positivo. Solo inspecciona campos FScientificNumber; no valida Packed ni Safe.
Qué has construido: una configuración con tu propio esquema, lectura por las funciones nativas de Unreal y una comprobación de contenido numérico antes de usar la tabla.