Unreal Engine 4:数据存储

版权声明:本文为燕良原创文章,转载请注明出处:http://blog.csdn.net/neil3d

在游戏开发中经常要用到数据驱动,俗称“策划拉表”。在虚幻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。
ItemDef

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

最后,我们就可以使用GetDataTableRowNames和GetDataTableRow这两个蓝图节点来读取这个表格数据了。具体的蓝图如下:
BP_DataDriven
如果看不清图片的话,请下载工程文件吧。:)


虚幻引擎的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”,就会弹出下面这个窗口,窗口中就多出了我们这个类:

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

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章