Unreal Cook Book:数据驱动

在游戏开发中经常要用到数据驱动,俗称“策划拉表”。在虚幻4引擎中,有多种方式处理数据,在这里我就介绍最常用的两种。


虚幻引擎内建的表格导入机制

假设策划同学有以下这样一个数据表,用来存储道具相关的信息:

Name Damage Price Desc
Shanker 707 6395 Warmongering Gladiator’s Shanker
Ripper 814 6400 Tournament Gladiator’s Ripper
Chopper 407 3976 Warmongering Combatant’s Chopper

想要导入这个数据表的话,首先需要定义一个与这个表结构相对应的数据结构。如果使用C++编程的话,需要创建一个FTableRowBase的派生类;使用Blueprint的话,就创建一个标准的结构体就可以了。下图就是我为这个表格创建的Blueprint Struct。

然后,上述表格需要存成CSV格式。然后,你就可以把这个CSV文件拖放到引擎的Content Browser中了。在数据导入的设置中,把数据类型设置成我们这个结构体:ItemDef。

最后,我们就可以使用GetDataTableRowNames和GetDataTableRow这两个蓝图节点来读取这个表格数据了。具体的蓝图如下:

如果看不清图片的话,请下载工程文件吧。:)


虚幻引擎的DataAsset

另外一个常见的需求是我们需要在引擎编辑器中编辑一些常用的数据对象,这些数据并不需要批量配置,但需要方便灵活的修改。在Unity3D中提供了ScriptObject来做这类事请,而在虚幻4中提供了DataAsset,也是同样的目的,使用方法也十分类似。

首先我们需要创建一个UDataAsset的派生类,用这个类来管理一组数据:

/**
 * 演示使用DataAsset来处理数据
 */
UCLASS(Blueprintable, Category="DataDemo")
class UNREALCOOKBOOK_API UQuestDataAsset : public UDataAsset
{
    GENERATED_BODY()

public:
    UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "DataDemo")
    FString QuestSetName;

    UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "DataDemo")
    TArray<FQuestDef> QuestArray;
};

有了这个类之后,在Content Browser的New Asset菜单–>杂项里面选择“DataAsset”,就会弹出下面这个窗口,窗口中就多出了我们这个类:

- 创建了这个DataAsset之后,就可以用引擎内置的编辑器来编辑它:

  • 编辑好之后,我们就可以在Blueprint中使用LoadAsset节点来加载它:


工程文件&源代码下载

源代码下载: https://code.csdn.net/neil3d/unrealcookbook

DEMO运行:Content/DataDemo/DataDemoMap


相关官方文档:https://docs.unrealengine.com/latest/INT/Gameplay/DataDriven/

时间: 2024-10-12 14:50:26

Unreal Cook Book:数据驱动的相关文章

Unreal Cook Book:神奇的Spline Mesh

啥是Spline Mesh 虚幻4引擎和Unity3D一个主要的不同就是:虚幻4引擎提供了非常非常多的各种功能.这是因为EPIC也开发游戏,而且是很成功的大作.他们会把游戏项目中一些验证过.可被其他开发者重用的功能整合到引擎层.所以虚幻4引擎要学习的东西非常多,但是如果你掌握的越多,做起项目来很可能就约轻松.:) 本文就介绍虚幻4引擎中的一个很好玩的组件:Spline和Spline Mesh.Spline就是一个曲线,你可以在编辑器中添加控制点,移动控制点,设置控制点的切线等:而Spline M

Unreal Cook Book:动态改变材质的颜色等参数

项目常见需求之一就是在运行时,根据游戏逻辑或者其他奇葩需求动态改变对象的外观,其中一些需要动态改变材质的某些参数,例如颜色值,贴图等. 在虚幻4引擎中完成这个非常简便,主要分为三步: 创建包含材质参数的Material 如上图所示,我创建了一个非常简单的材质,其中包含"MColor"这样一个vector3的参数. 创建Dynamic Material Instance 接下来就要创建Dynamic Material Instance对象,一般可以在对象的Construction Scr

Aery的UE4 C++游戏开发之旅(4)加载资源&amp;创建对象

目录 资源的硬引用 硬指针 FObjectFinder<T> / FClassFinder<T> 资源的软引用 FSoftObjectPaths.FStringAssetReference TSoftObjectPtr<T> 同步加载资源 LoadObject/LoadClass TryLoad/LoadSynchronous 异步加载资源 FStreamableManager.RequestAsyncLoad() 卸载资源 创建对象 创建一般对象 创建Actor派生类

UNREAL ENGINE 4.12 正式发布!下载地址

UNREAL ENGINE 4.12 正式发布! 下载地址:https://www.unrealengine.com/ Alexander Paschall 在 June 1, 2016 |功能新闻社区 Share on Facebook Share on Twitter Share on Google+ Share on LinkedIn 此版本内含虚幻引擎 4 的数百个更新,以及 GitHub 虚幻引擎开发者社区提交的 106 项改良!特此对虚幻引擎 4.12 版本的贡献者们表达诚挚谢意:

Unreal Engine Android 打包

默认执行命令 UE4Editor-Cmd.exe "MyProject\MyProject.uproject" -run=Cook -MapIniSection=AllMaps  -I18NPreset=  -TargetPlatform=Android_ETC1 -buildmachine -Unversioned -fileopenlog -abslog="C:\Users\Administrator\AppData\Roaming\Unreal Engine\Autom

【工业串口和网络软件通讯平台(SuperIO)教程】六.二次开发导出数据驱动

SuperIO相关资料下载:http://pan.baidu.com/s/1pJ7lZWf 1.1    导出数据接口的作用 在数据集成系统项目中,要么是自已集成其他厂家的设备,要么是其他厂家集成自己家的设备,在没有统一的标准前提下,就会有各种集成数据的格式.为了满足此类的场景,为设备输出数据专门设计了接口,开发者可以继承该接口,设备在处理完数据后,会把数据自动传输到该接口,可以按规定的数据格式进行输出了. 1.2    接口功能说明 开发设备输出接口,主要考虑到在集成项目中,集成过程中或被集成

【Tim Sweeney】Why C++ for Unreal 4?

The first three generations of the Unreal Engine included a sandboxed scripting language, UnrealScript, which provided a simple interface for gameplay programming that was shielded from the complexity of the C++ engine.The scripting approach is very

Python Unittest与数据驱动

python中有一个装饰器类DDT,通过它我们可以复用代码,达到数据驱动测试的目的,该类的官方介绍可以参考 http://ddt.readthedocs.io/en/latest/index.html 安装ddt方式很简单,直接在cmd命令行输入:pip install ddt ,完成安装即可. 下面看一个简单的例子: 1 import unittest 2 from practise.myTestPractice.api_login import * 3 import ddt 4 5 6 @d

Unreal Engine 4 动态切割模型实现

Unreal Engine 4 动态切割模型实现 <合金装备:复仇>里面,有一个很有趣的设定,游戏里大部分的场景和物件都可以用主角的刀动态切割. UE4中的ProceduralMeshComponent这个组件可以很容易的就实现这种功能,下面介绍下实现的方法. 准备模型 首先我们准备一个模型. 我做了一个简单的圆柱体,用来测试.注意需要切割的地方,为了保证细节,多放点顶点. 为了能够动态切割,我们要勾选这个模型的Allow CPUAccess选项. 新建蓝图 新建一个Actor蓝图,为它添加两