Un registro de datos es un espacio global y eficiente donde se almacenan estructuras con datos que tengan por etiqueta USTRUCT. Los registros de datos son compatibles con el acceso a datos de forma sincrónica o asincrónica y con los comportamientos de almacenamiento en la caché definidos por el usuario. Funcionan con datos generales de solo lectura.
Los registros de datos forman parte de un complemento. La guía de inicio rápido de los registros de datos te mostrará el proceso y algunos conceptos básicos. Para datos concretos sobre sesiones, como el progreso en una historia o el estado actual de un personaje, usa el sistema de guardado del motor.
El registro de datos puede configurarse para que cargue o genere datos a partir de distintas fuentes. Además, este se puede rellenar mediante el escaneo de recursos y el registro manual. Los registros de datos se asemejan a las tablas de datos compuestos, aunque estos pueden almacenar datos de curvas además de las filas estándar de las tablas. Además, usan una capa de indirección para no tener que agrupar manualmente varias tablas.
Fuentes de datos
Data Registries gather data items from two types of sources, Data Registry Sources and Meta Data Registry Sources. These sources are not the actual data items, instead the Data Registry uses them to find or generate data items. The order in which data sources appear within a Data Registry matters, if a specific data item is not found in one source, then the Data Registry will look in the sources that appear after it in the list.
This creates the potential for override and fallback behavior, and enables context-specific sources to override generic ones.
The Data Registry plugin includes built-in Data Registry Sources and Meta Data Registry Sources that wrap Data Tables (UDataTable) and Curve Tables (UCurveTable).
Fuentes del registro de datos
The Data Registry directly owns a set of Data Registry Source objects that you can create and configure in an array within the Data Registry Asset.
These objects represent interfaces to specific data sources where the Data Registry can find information, such as an individual data table or a web database.
You can create child classes of UDataRegistrySource if you want to handle other types of data, or implement different indirection rules to map identifiers to data items.
Any child class you create will appear in the dropdown list when you add new data sources to a Data Registry Asset.
Fuentes del registro de metadatos
Meta Data Registry Sources create and own other data sources at runtime. Rather than explicitly list all data sources, Meta Data Registry Sources use generic rules, such as scanning a set of user-named paths, to locate Assets that contain data items. They can also listen for manual registration of specific Assets.
Because Meta Data Registry Sources are dynamically generated, data sources (and the data items within those sources) that they discover load into the Data Registry at runtime.
Similar to Data Registry Sources, you can create your own child classes to handle other data types, create different scanning rules, and so on. To do this, override the UMetaDataRegistrySource class.
Any child classes you create will appear in the dropdown list as options when you add new Data Sources to a Data Registry Asset.
Identificadores
El complemento Data Registry usa sus propios tipos de identificador para identificar y buscar registros de datos y los elementos de los datos individuales que estos contienen. Aunque estos identificadores son nombres basados en cadenas, las estructuras FDataRegistryType (para los recursos del registro de datos) y FDataRegistryId (para los elementos individuales de un registro de datos) actúan como envoltorios y proporcionan funciones útiles en el editor.
FDataRegistryType identifica a un recurso del registro de datos. En cambio, el FDataRegistryId identifica a un registro de datos y al elemento concreto de un dato que haya dentro de él. Se pueden usar estos tipos de identificación para encontrar recursos del registro de datos o para obtener elementos de datos individuales.
Cada recurso del registro de datos debe tener un nombre que no se repita en el campo Tipo de registro. Si dos recursos de registros de datos cuentan con el mismo nombre en este campo, el sistema solo reconocerá y usará uno de ellos. De igual manera, si varios elementos de datos comparten el mismo valor de identificación (el nombre o la etiqueta de la jugabilidad), el registro leerá todos los elementos, pero con las operaciones de obtención solo se tendrá acceso al primero que cargó el recurso del registro de datos. Consulta la sección sobre fuentes de datos para saber cuál es el orden en el que se cargan los elementos de los datos.
Los desarrolladores que usan C++ pueden cambiar este comportamiento al crear una clase subordinada del registro de datos y modificar la función ResolveDataRegistryId.
Identificadores de los recursos del registro de datos
While setting up a Data Registry Asset, developers must set the Registry Type field to a unique name value. This is the identifier for the Data Registry.
After setting this value, FDataRegistryType fields across the editor will immediately add the new Data Registry name to their dropdown list.
This prevents user error resulting from spelling mistakes when referencing the Data Registry in other Assets, and makes the selection process quicker and easier.
Identificadores de los elementos de los datos
Identifying an individual data item, such as a row within a data table, requires specifying the Data Registry Asset and the data item itself. The FDataRegistryId type contains both identifiers. Its Data Registry Type field will appear as a dropdown list, from which you can select any known Data Registry by its identifying name.
After selecting a Data Registry's name from that dropdown list, the Data Registry ID field will change to accommodate the Data Registry.
If the Data Registry's ID Format uses a Gameplay Tag, the user interface will display a filtered list containing that Gameplay Tag and all of its children. If the Data Registry's ID Format did not use a Gameplay Tag, the user interface will display a dropdown list of all known rows that the Data Registry Asset contains.
En caso de editar un recurso del registro de datos, puede que los cambios no tengan un efecto inmediato en otros recursos que le hagan referencia con identificadores de los elementos de los datos. Si esto sucede, los identificadores de los elementos de los datos podrían contener filas obsoletas en su menú desplegable. Haz clic en el botón Compilar del recurso que hace referencia al registro de datos (no al recurso del registro de datos) para actualizar la interfaz con la información actual de los elementos de los datos.
Dado que FDataRegistryId cuenta con un miembro FDataRegistryType (llamado RegistryType), puedes encontrar el recurso del registro de datos que contiene la fila sin necesidad de un identificador FDataRegistryType por separado.
Dynamic Identifier Resolution
By default, the system looks up data items by searching for the value of the ItemName field of the FDataRegistryId you supply. If this is not the ideal behavior for your project, you can create your own UDataRegistry subclass and override the MapIdToResolvedName function to include additional FDataRegistryResolverScope structs in the local scope. By overriding the ResolveIdToName function within your FDataRegistryResolverScope subclasses, you can remap the incoming row names, even using dynamic or player-specific information. After resolving an ID, the system produces an FDataRegistryLookup which is guaranteed to be unique (within the system) and is used as the caching unique ID.
Referencia de función rápida
Las siguientes funciones sirven para iniciarse en los registros de datos. No se trata de una referencia completa, pero las siguientes funciones son esenciales a la hora de acceder a datos tras haber configurado los registros de datos en tu proyecto.
| Function | Description |
|---|---|
| Returns a pointer to the |
| Takes a name or |
| Searches for a Data Registry by |
| Searches the Data Registry for the data item that corresponds to the |
| Populates a map with a pointer to the engine's |
| Finds the curve that corresponds to the |
| Similar to |
Caching struct pointers that you retrieve from a Data Registry can be unsafe. While some data items are always available, others load dynamically and the Data Registry can unload them without warning. If you are potentially dealing with data that can be unloaded, the recommended practice is to use the data immediately after retrieving it, or cache your own copy rather than keeping the pointer from the Data Registry.
Integración con funciones del juego
El complemento Data Registry puede añadir tantos registros de datos como fuentes individuales del registro de datos a partir de complementos de las funciones de los juegos. Para saber cómo funciona este proceso, consulta la página Características de juego y jugabilidad modular.