第一部分:创建蓝图版“枚举”和“结构体”
步骤 1:创建枚举(Enum)资产
-
在内容浏览器中,右键点击空白处。
-
从菜单中选择 蓝图(Blueprints) -> 枚举(Enumeration)。

-
将其命名为
EN_ItemRarity(建议加前缀EN_便于识别)。 -
双击打开它,在枚举编辑器中点击 添加枚举器 按钮,依次添加:
-
Common(普通) -
Uncommon(优秀) -
Rare(稀有) -
Epic(史诗) -
Legendary(传说)
-

-
你可以在右侧描述中添加中文(如“普通”),方便查看。
-
编译并保存。
步骤 2:创建结构体(Structure)资产
-
在内容浏览器中,右键 -> 蓝图(Blueprints) -> 结构体(Structure)。
-
将其命名为
S_ItemRow(建议加前缀S_)。
![图片[3]_虚幻引擎结构体(Struct) 和枚举(Enum)及数据表(Data Table)_虚幻引擎](https://xhyq.com/wp-content/uploads/2026/08/3创建结构体.jpg)
-
双击打开结构体编辑器,点击 新增变量(Add Variable),添加以下字段(注意修改变量类型):
-
ItemID(类型:Name)—— 用作唯一标识。 -
DisplayName(类型:Text)—— 游戏内显示名称。 -
Rarity(类型:搜索并选择我们刚建的EN_ItemRarity枚举)。
-

-
-
Price(类型:Integer)。 -
Icon(类型:Texture2D,如果需要图标引用)。
-

-
保持每个变量为 可编辑,否则在数据表里看不见。

-
编译并保存。
第二部分:创建数据表(Data Table)
-
在内容浏览器中,右键 -> 其他 -> 数据表(Data Table)。

-
在弹出的“选择行结构”窗口中,搜索并选择我们刚创建的
S_ItemRow结构体,点击 选择(Select)。

-
将新数据表命名为
DT_Items。 -
双击打开数据表编辑器,开始填充数据:
-
点击 添加行(Add Row),将行名称(Row Name)设为
Potion_Health(注意:这是代码查找用的Key,区分大小写)。
-

-
-
在对应的列中:
ItemID填Potion_Health,DisplayName填生命药水,Rarity列会自动变成下拉菜单,直接选择Common,Price填50。
-

-
-
再添加一行
Sword_Iron,稀有度选Uncommon,DisplayName填铁剑,生命药水,价格填200。 -
添加完成后保存。
-

第三部分:在蓝图中读取数据(纯蓝图节点用法)
现在我们来创建一个 Actor,让它读取这张数据表。
-
创建蓝图类:右键 -> 蓝图类(Blueprint Class),父类选择
Actor,命名为BP_ItemSpawner。

-
打开蓝图,在 我的蓝图(My Blueprint) 面板中点击 + 新建变量:
-
变量名:
ItemDataTable,类型选择 数据表(Data Table)。
-

-
-
在右侧 细节(Details) 面板中,将该变量的默认值指定为我们刚创建的
DT_Items。
-

-
进入事件图表(Event Graph),从
BeginPlay节点开始拖线,按以下逻辑连接节点:-
拖出
ItemDataTable变量节点。
-

-
-
从该节点拖出引脚,搜索并添加 获取数据表行(Get Data Table Row) 节点。选择资产那里选择表格。
-


-
-
在该节点的 行名称(Row Name) 输入框中,手动输入
Potion_Health(务必与数据表里的行名大小写完全一致)。 -
关键点:该节点的 输出结构(Out Struct) 引脚类型就是
S_ItemRow(它会自动识别)。 -
从
Out Struct引脚拖出,搜索并添加 断开结构体(Break S_ItemRow) 节点(会自动展开所有字段)。
-

-
-
从断开的结构体中,拖出
DisplayName和Price引脚,连接到 打印字符串(Print String) 节点。(注意:Text类型需要用ToString节点转换一下)。
-

-
编译保存,将
BP_ItemSpawner拖入游戏关卡中。

-
运行游戏,屏幕上会打印出“生命药水”和“50”。

第四部分:纯蓝图必须注意的“坑”与补救技巧
由于纯蓝图没有C++的编译时强校验,操作时请注意以下三点:
-
结构体修改不同步(最常见的Bug):
-
如果已经创建了数据表
DT_Items,之后又去修改了结构体S_ItemRow(比如新增了一个字段或改了类型),数据表不会自动更新。 -
解决方法:在数据表
DT_Items上右键,选择 重新导入结构体(Reimport Struct) 或 刷新(Refresh),否则打开数据表时会看到红字报错。
-
-
行名称(Row Name)是查找的唯一凭证:
-
在C++中可以用枚举做Key,但在纯蓝图中,
Get Data Table Row节点只接受字符串/Name输入。建议将行名称和结构体里的ItemID填写成一致的字符串,避免混淆。
-
-
数据表输出的是“副本”而非引用:
-
Get Data Table Row节点的Out Struct输出的是该行数据的拷贝。你修改蓝图中断开后的变量,不会影响数据表里的原始数据,无需担心误改。
-
补充:如果不想用“行名称”硬编码字符串
如果你觉得手动输入 Potion_Health 字符串容易打错,可以在蓝图里再创建一个枚举(如 E_ItemName),把所有的物品ID列进去。然后使用 Get Data Table Row 时,先用 枚举转名称(Enum to Name) 节点转换,再连入行名称引脚,这样就能通过下拉菜单选择了。
总结一下纯蓝图的全流程口诀:“右键建枚举,右键建结构,数据表选结构,Get节点打断它”。
感谢您的来访,获取更多精彩文章请收藏本站。
















暂无评论内容