在虚幻引擎5(UE5)的蓝图中,集合(Set) 是一种容器,用于存储唯一且无序的同类型元素。你可以把它想象成一个“不允许有重复项”的袋子。
Make Set、Add to Set 和 Contains in Set 是操作集合最核心的三个节点。下面我将通过一个具体的“游戏成就系统”案例,详细介绍每个节点的完整操作步骤。
概念准备:集合(Set)的核心特性
在开始之前,需要先理解集合的两个关键特性:
-
元素唯一性:集合中不能存在两个相同的元素。如果试图添加一个已存在的元素,操作将不会成功。
-
无序性:集合中的元素没有特定的顺序,因此不能像数组(Array)那样通过索引来访问元素。
案例场景:管理游戏已解锁的成就
假设我们要制作一个简单的成就系统,需要记录玩家已经解锁了哪些成就,并检查某个成就是否已被解锁。
第一步:创建集合变量
-
在蓝图(如
ThirdPersonCharacter或GameInstance)的 “我的蓝图” 面板中,点击 “+” 按钮新建一个变量。 -
将其命名为
UnlockedAchievements。 -
在 “细节” 面板中,点击变量类型(默认为
Boolean),在弹出的菜单中:-
首先选择 “容器类型” 为 “集” 。
-
然后选择 “集类型” 为 “字符串” (或
Name、枚举等,用于标识不同的成就)。
-
-
点击 “编译” 按钮。编译后,你可以在 “默认值” 中为这个集合预设一些初始成就。
1. Make Set 节点:创建临时集合
Make Set 节点的作用是从一系列项目中创建一个新的临时集合。它通常用于生成一个集合,供其他节点(如Contains in Set)使用,而无需预先定义变量。
操作步骤:
-
在蓝图的事件图表中,右键单击空白处,在搜索框中输入
Make Set并选择该节点。 -
节点创建后,默认会有一个输入引脚
[0]。你可以点击节点上的 “添加引脚” 按钮来增加更多输入,每个引脚对应集合中的一个元素。 -
将你想放入集合的值连接到这些输入引脚上。
案例应用:
假设游戏中有三个基础成就,我们想检查玩家是否全部解锁。可以这样操作:
-
创建一个
Make Set节点,添加三个引脚,分别填入字符串值:"FirstBlood"、"Explorer"、"Collector"。 -
这个节点的输出
Set就是一个包含这三个字符串的临时集合。
注意:
Make Set创建的是临时集合,它不会修改或保存到任何变量中,只用于当前流程的即时操作。
2. Add to Set 节点:向集合添加元素
Add to Set 节点(在蓝图中显示为 ADD )用于向一个已有的集合变量中添加一个新元素。如果该元素已存在于集合中,则添加操作会被忽略。
操作步骤:
-
从
UnlockedAchievements变量节点拖出引线,松开鼠标,在菜单中选择 “设置 UnlockedAchievements” (即Set节点)。 -
或者,直接在图表中右键单击搜索
Add,选择“Utilities” > “Set”下的Add节点。 -
将
Add节点的Target Set引脚连接到你的集合变量UnlockedAchievements上。 -
将你想要添加的新元素值连接到
New Item引脚上。 -
用执行线(白色箭头)连接
Add节点的In和Out引脚,确保逻辑顺序正确。
案例应用:
当玩家完成某个动作(如击败第一个敌人)时,解锁“FirstBlood”成就:
-
在“击败敌人”的逻辑后面,放置一个
Add to Set节点。 -
将
UnlockedAchievements变量连接到Target Set。 -
将字符串
"FirstBlood"连接到New Item。 -
当此逻辑执行时,
"FirstBlood"就会被添加到UnlockedAchievements集合中。
3. Contains in Set 节点:检查元素是否存在
Contains in Set 节点(在蓝图中显示为 CONTAINS 或 Contains Item )用于检查一个集合中是否包含某个特定的元素。如果包含,则输出 True,否则输出 False。
操作步骤:
-
在图表中右键单击搜索
Contains,选择Contains Item节点。 -
将
Contains Item节点的Target Set引脚连接到你要查询的集合变量上。 -
将你要查找的元素值连接到
Item to Find引脚上。 -
该节点的
Return Value引脚(布尔值)就是检查结果。
案例应用:
在游戏主界面上,我们想根据玩家是否解锁了“Collector”成就来显示不同的提示:
-
放置一个
Contains in Set节点。 -
将
UnlockedAchievements变量连接到Target Set。 -
将字符串
"Collector"连接到Item to Find。 -
从
Contains节点的Return Value引出一条线,连接到一个Branch(分支)节点的Condition引脚。 -
在
Branch的True执行引脚上,连接显示“恭喜你已解锁收藏家成就!”的逻辑;在False引脚上,连接显示“继续探索以解锁收藏家成就!”的逻辑。
综合案例:完整的成就解锁与检查流程
下面是一个综合运用这三个节点的完整蓝图逻辑示例:
-
初始化:在游戏开始时,可以使用
Make Set节点创建一个包含所有成就ID的临时集合,方便进行批量操作。 -
解锁成就:当玩家达成条件时,使用
Add to Set节点将对应的成就ID添加到UnlockedAchievements变量中。 -
检查与反馈:在任何需要判断的地方(如UI界面),使用
Contains in Set节点检查特定成就ID是否存在于UnlockedAchievements中,并根据结果执行不同的逻辑。
常用相关节点补充
除了上述三个核心节点,操作集合时还会用到以下常用节点:
| 节点名称 | 功能描述 |
|---|---|
Remove |
从集合中移除一个指定的元素。 |
Length |
获取集合中当前元素的总个数。 |
Clear |
清空集合中的所有元素。 |
To Array |
将集合转换为数组,便于遍历(因为集合本身没有Get节点)。 |
Union |
合并两个集合,返回一个新集合(自动去重)。 |
Intersection |
取两个集合的交集,返回一个新集合。 |
重要提示:集合是按值传递的。当你将集合变量连接到节点时,实际上是在操作该集合的副本。因此,对集合的修改(如Add、Remove)必须通过Set节点将修改后的副本重新赋值回原变量,才能生效。Add to Set节点内部已经封装了这个赋值过程,所以直接使用即可。
感谢您的来访,获取更多精彩文章请收藏本站。







暂无评论内容