NO MOM
I CANT PAUSE.
Scientific Number Tools Documentación
Soporte
Explorar lecciones

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

  1. Detén Play. En el Content Browser abre Add → Blueprints → Structure y crea ST_EconomyRow.
  2. Añade Price y Reward, ambos de tipo Scientific Number; Category de tipo Gameplay Tag; y Label de tipo String. Configura etiquetas como Game.Economy y Game.Shop en los Gameplay Tags del proyecto, si aún no existen.
  3. Dentro de Data, elige Miscellaneous → Data Table. Selecciona ST_EconomyRow como estructura de fila y llama a la tabla DT_MiEconomia.
  4. En el editor de la tabla, crea las filas Defaults y Upgrade. En el campo de texto único, escribe 1e3 para Defaults.Price, 2.5e1 para Defaults.Reward, 2.5e2 para Upgrade.Price y 0 para Upgrade.Reward. Elige Category con el selector de Gameplay Tag y completa Label.
  5. 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

  1. 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_MiEconomia a Tabla y Defaults a Fila.
  2. 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.
  3. 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.
  4. Conecta el pin de ejecución Row Not Found a otro Print String con No se encontró la fila Defaults.
  5. 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

  1. En el Actor de tu cartera, confirma que Wallet es un Scientific Number Safe Value Component.
  2. En el recorrido de nueva partida, conecta la ejecución de BeginPlay a Get Data Table Row, con DT_MiEconomia y Row Name Defaults.
  3. 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.
  4. 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

  1. 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.
  2. 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.