用途:在C++中建模并加载由策划编写、编辑器制作的数据,包括数据资产、数据表、曲线表、软引用与资源流式加载。
主要能力:
- 容器选择:UDataAsset、UPrimaryDataAsset(可被AssetManager按ID扫描与加载)、UDataTable+FTableRowBase、UCompositeDataTable、UCurveTable/FCurveTableRowHandle、UDataRegistrySubsystem、UDeveloperSettings。
- 数据资产:支持蓝图子类与继承,AssetRegistrySearchable属性可写入注册表供过滤;meta=(AssetBundles="...")配合UpdateAssetBundleData()分组软引用,供按Bundle子集加载。
- 数据表:行结构派生FTableRowBase;可用FindRow、GetAllRows、GetRowNames、ForeachRow、GetRowMap查询;FDataTableRowHandle便于编辑器指定;支持AddRow/RemoveRow、CSV/JSON导入(CreateTableFromCSVString等);bStripFromClientBuilds可令服务器专用表不下发客户端。蓝图侧由UDataTableFunctionLibrary提供。
- 曲线表:FCurveTableRowHandle支持Eval、GetCurve等;UCompositeDataTable按行名由后表覆盖前表,用于基础包加DLC或平台覆盖。
- 引用与加载:TObjectPtr为硬引用,TSoftObjectPtr/TSoftClassPtr/FSoftObjectPath为软引用;FStreamableManager经UAssetManager::GetStreamableManager()获取,支持RequestAsyncLoad(含Params形式、JIT)与RequestSyncLoad,句柄本身即引用。
用法要点:Build.cs按需添加Engine、CoreUObject、AssetRegistry、DeveloperSettings、DataRegistry模块;AssetManager需通过配置的子类注册。
限制:GetTableAsCSV/JSON/String仅在WITH_EDITOR下存在;IsDataValid需用WITH_EDITOR保护;AddRow等运行时修改只驻留内存不落盘;GetTableAs*在打包版本不可用;RunTime同步加载阻塞主线程,仅用于加载画面或一次性初始化;官方未提供价格、平台与效果信息。