QQ泡沫乐园 · 免费提供游戏辅助,破解软件,活动资讯,喜欢记得收藏哦!
综合软件_线报活动_游戏辅助_最新电影_最优质的的辅助分享平台

一种高效的全局存储空间,用于存储带有USTRUCT标记的数据结构

网络 2023-01-09 02:04

一种高效的全局储存空间,用于储存带有USTRUCT标记的数据结构序言

之前学习了UE5新的Gameplay功能EnhancedInput

今天,来学习下另一个小的新功能,一种新的数据配置方法:DataRegistry(简称DR)。主要学习资料还是官方的直播课:

一、问题来历

谈到数据配置,就不得不想到数据驱动开发,其带来了好多的用处,如

1.1 数据驱动优点

当前主流的数据驱动的形式分类如下

1.2 数据驱动形式分类

每一种的具体使用方式及优缺点可观看官方直播

喜欢文字的,这里有他人的笔记

模拟驾驶人生3_模拟驾驶人生游戏下载_模拟人生2 写注册表

那么这么多的数据配置方法每一种都有自己的数据读取方法,这太麻烦了。能不能有一种统领全局的数据配置方法,可以储存、合并、读取和管理不同来源的数据。于是DataRegistry出现了。

这听上去和CompositeDataTables(复合数据表)很类似,复合数据表不就是把多个DataTable组织在了一起吗?但DR比它更复杂,功能也更多。DR构架在DT之上,DR本身不直接配置数据,而是更好的组织数据,DT反倒会显得更底层一些。DR相当于从多个表里生成的临时数据,并且附送了许多优势与特征:

优势与特征

发展的脉络可以简单理解为DataTable->CompositeDataTable->DataRegistry。(DR的数据源可以来自不同的地方,根据你设置的ItemStruct而定,不仅仅是DT)

由于其更好的扩充及缓存机制等优点,Data Registries可能会是将来引擎上面统一的数据管理方法。在堡垒之夜中,已深度使用DR来管理数据。

二、核心概念

开启插件后,在杂项里就可以创建一个DR资产(简称DRA),其承继于UObject,用户可以承继DR来自定义自己的DR。

属性涵义2.1 数据源(DataSource)

数据注册表资产外置的四种数据注册表源类型,以链表保存

说到这儿,来瞧瞧DR的整体结构

2.2 标识符

在我们创建完一个DR资产后,当引用它的时侯怎样找到它呢?那必须在注册表类型(Registry Type)字段中指定全局惟一名称,用来标示这个DRA。

DR使用独有的标识符来查找数据注册表以及其中包含的单个数据项。这些标识符本质上都是基于字符串的名称。

不过FDataRegistryType(用于数据注册表资产)和FDataRegistryId(用于数据注册表中的单个数据项)结构却属于包装器(wrapper),能提供实用的编辑器内部功能。

在须要引用数据注册表资产的Actor中选择一个标识符,或者选择该数据注册表中的特定数据行

这里还有一个概念是ID Format,多加了一个筛选条件,可以配合GAS(游戏技能系统)使用,如果要用,就要在配表的时侯遵守规则。

2.3 创建的DRA是怎样加载到显存里的?

方式1:自动加载,通过Directories to Scan指定扫描目录。在项目设置下的Game里。

方式2:手动加载数据注册表

2.4 缓存机制

模拟驾驶人生3_模拟驾驶人生游戏下载_模拟人生2 写注册表

2.5 自定义数据Id的动态解析

可以承继自UDataRegistry 自定义自己想要的DataRegistry ,比如定义自己想要的ID解析规则,不是仅仅依据字段。这是在DataRegistry 层级

还可以在全局,对所有DataRegistry 都生效的方式,只要承继自FDataRegistryResolver

然后通过右图所示,注册到全局DataRegistry

具体的用法还是通过视频可以更好的理解

三、基本用法

模拟驾驶人生3_模拟驾驶人生游戏下载_模拟人生2 写注册表

3.1 流程展示

1.开启插件

2.设置DR扫描目录

3.创建DRA

配置如下图后,得到相应了数据,之后便可以进行读取。蓝图C++都提供了许多函数进行访问,并且支持异步。

4. 设置相应属性获得数据,之后就可以在你想用的地方读了,是只读的

快速读取函数参考

具体的用法可以参考视频中的使用,通过本文可以读DataRegistry有个基本的了解~

参考: