Unreal Engine 4:学习笔记(十八)Table

目录

一、DataTable

1、创建方式

2、使用方式

二、CurveTable

1、创建方式

2、使用方式

 三、StringTable

1、创建方式

2、使用方式


一、DataTable

1、创建方式

首先准备一个struct定义,比如LevelUpData.h,其中AchievementIcon导入后可转化为TSoftObjectPtr<UTexture>类型:

/** Structure that defines a level up table entry */
#include "CoreMinimal.h"
#include "Engine/DataTable.h"
#include "LevelUpData.generated.h"

USTRUCT(BlueprintType)
struct FLevelUpData : public FTableRowBase
{
	GENERATED_USTRUCT_BODY()
public:
	FLevelUpData()
		: XPtoLvl(0)
		, AdditionalHP(0)
		, Achievement(TEXT(""))
	{}

	/** The 'Name' column is the same as the XP Level */

	/** XP to get to the given level from the previous level */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "LevelUp")
		int32 XPtoLvl;
	/** Extra HitPoints gained at this level */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "LevelUp")
		int32 AdditionalHP;
	/** Achievement name at this level */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "LevelUp")
		FString Achievement;
	/** Icon to use for Achivement */
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "LevelUp")
		TSoftObjectPtr<UTexture> AchievementIcon;
};

创建DataTable有如下两种方式:

a.Content Brower中点击右键菜单,选择Miscellaneous -> DataTable,选择LevelUpData,再手工输入。

b.导入的csv文件:example.csv,其中第一行第一列的名字必须为Name:

Name,XPtoLvl,AdditionalHP,Achievement,AchievementIcon
1,0,0,"Achievement1",Texture2d'/Game/UI/Textures/AchievementIcon1.AchievementIcon1'
2,1000,9,"Achievement2",Texture2d'/Game/UI/Textures/AchievementIcon2.AchievementIcon2'
3,1000,10,"Achievement3",Texture2D'/Game/UI/Textures/AchievementIcon3.AchievementIcon3'
4,1500,12,"Achievement4",Texture2D'/Game/UI/Textures/AchievementIcon4.AchievementIcon4'
5,2000,14,"Achievement5",Texture2D'/Game/UI/Textures/AchievementIcon5.AchievementIcon5'

生成后的结果:

2、使用方式

static const FString ContextString(TEXT("GENERAL"));
static ConstructorHelpers::FObjectFinder<UDataTable> LevelUpDataDataTable_BP(TEXT("DataTable'/Game/UI/example.example'"));

UDataTable* LevelUpDataDataTable = LevelUpDataDataTable_BP.Object;
FLevelUpData* Row = LevelUpDataDataTable->FindRow<FLevelUpData>(*FString::Printf(TEXT("%d"), 1), ContextString);

GEngine->AddOnScreenDebugMessage(-1, 60.f, FColor::Red, FString::Printf(TEXT("Achievement=%s"), *Row->Achievement));

二、CurveTable

1、创建方式

需要导入的csv文件:example1.csv,其中第一行第一列的名字必须为Name:

Name,0,1,2,3
Melee_Damage,15,20,25,30
Melee_KnockBack,1,2,4,8
Melee_KnockBackAngle,10,45,60,65
Melee_StunTime,0,1,5,7

 curve interpolation type上课选如下三种值:

Cubic:三次插值
Constant:常数内插法
Linear:线性插值

 导入后的结果:

2、使用方式

 使用方式与CurveTable的使用方式相同

 三、StringTable

1、创建方式

a.使用C++创建

// Create and populate a string table using only C++
LOCTABLE_NEW("CodeStringTable", "CodeStringTable");
LOCTABLE_SETSTRING("CodeStringTable", "HelloWorld", "Hello World!");
LOCTABLE_SETMETA("CodeStringTable", "HelloWorld", "Comment", "This is a comment about hello world");
LOCTABLE_SETSTRING("CodeStringTable", "GoodbyeWorld", "Goodbye World!");
LOCTABLE_SETMETA("CodeStringTable", "GoodbyeWorld", "Comment", "This is a comment about goodbye world");

b.使用csv文件创建

使用LOCTABLE_FROMFILE_X加载CSV文件
若X=ENGINE,表示CSV文件存放于相对于Engine的content目录的位置;
若X=GAME,表示CSV文件存放于相对于项目content目录的位置;

例子如下:

Key,SourceString,Comment
"HelloWorld","Hello World!","This is a comment about hello world"
"GoodbyeWorld","Goodbye World!","This is a comment about goodbye world"

代码如下:

// Create and populate a string table from a CSV file
LOCTABLE_FROMFILE_GAME("CSVStringTable", "CSVStringTable", "StringTableCSV/TestStrings.csv");

c.创建String Table Asset

Content Browser (Add > Miscellaneous > String Table)

2、使用方式

a.从C++代码中作用

LOCTABLE(ID, KEY)

FText::FromStringTable(const FName InTableId, const FString& InKey, const EStringTableLoadingPolicy InLoadingPolicy)

b.从INI文件中使用

使用LOCTABLE宏

c.从FText属性忡使用

d.从Blueprint中使用

比如使用Make Literal Text节点

 

参考文档

Documentation Home -> Programming Guide -> Data Driven Gameplay Elements
Documentation Home -> Gameplay Guide -> Localization -> String Tables
Using excel to store gameplay data - DataTables
Driving Gameplay with Data from Excel
[UE4]引擎自身提供的一种夸平台读写Excel的组件:DataTable

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值