一、节点基础说明
1. 功能作用
Switch on String 是字符串多路分支判断节点,等价于代码 switch(string) {case xxx:};
输入一个字符串,自动匹配预设字符串分支执行对应逻辑,无匹配则走 Default 默认分支,替代多层嵌套 Branch,逻辑更整洁。
![图片[1]_虚幻引擎 Switch on String 节点_虚幻引擎](https://xhyq.com/wp-content/uploads/2026/06/Switch-on-String节点外观.jpg)
Switch on String节点外观
2. 引脚释义
- In(白色三角 Exec):执行入口,触发判断
- Selection(紫色字符串引脚):待匹配的字符串输入源
- 自定义 Case 输出(Case_0/Case_1…):字符串完全匹配时执行该分支
- Default:所有 Case 都不匹配时执行(可在细节面板关闭)
- Add pin:快速新增匹配分支
3. 关键属性(细节面板 Details)
![图片[3]_虚幻引擎 Switch on String 节点_虚幻引擎](https://xhyq.com/wp-content/uploads/2026/06/Switch-on-String细节.jpg)
细节面板Pin Names配置
- Pin Names:所有匹配的字符串列表,点
+新增、垃圾桶删除、双击修改文本 - Is Case Sensitive:区分大小写(勾选
Attack≠attack;取消则忽略大小写) - Has Default Pin:取消勾选可移除 Default 分支
二、UE5 完整实操分步操作(从零创建)
步骤 1:打开蓝图,创建执行入口
- 打开 UE5,新建 / 打开任意蓝图(Actor 蓝图、关卡蓝图、Widget 蓝图通用,下文用关卡蓝图演示)
- 顶部菜单栏:蓝图→打开关卡蓝图
- 在图表空白处右键搜索:
Event BeginPlay(游戏启动自动触发,作为测试入口)
步骤 2:创建字符串变量(待匹配数据源)
- 左侧我的蓝图面板 → 变量栏点 **+ 变量 **
- 变量设置:
- 名称:
PlayerCommand - 类型:String(字符串)
- 默认值:
Attack(测试用,可改为 Defend/Heal/ 其他文本)
- 名称:
- 点击变量旁小眼睛(设为公开可选,非必需),编译保存变量
步骤 3:两种方式添加 Switch on String 节点
方式 A:右键搜索添加(最常用)
- 图表空白处右键,输入:
Switch on String - 路径:工具→流程控制→Switch→开启字符串,点击生成节点
![图片[1]_虚幻引擎 Switch on String 节点_虚幻引擎](https://xhyq.com/wp-content/uploads/2026/06/Switch-on-String节点外观.jpg)
右键搜索节点界面
方式 B:从字符串引脚快速生成(快捷)
- 把
PlayerCommand变量拖到图表,选择获取 PlayerCommand - 拖动紫色字符串输出引脚向外拉,松开鼠标,弹出菜单选:
Add a 'Branch' or 'Switch' node... → Make a switch from this pin → String自动生成并连线 Switch on String,一步到位
步骤 4:基础连线(执行 + 数据)
Event BeginPlay白色执行箭头 → 连接Switch on String的 In 引脚获取 PlayerCommand的紫色字符串引脚 → 连接Switch on String的 Selection
步骤 5:配置匹配分支(核心步骤)
- 选中
Switch on String节点,右侧打开Details 细节面板 - 找到
Pin Options → Pin Names,开始添加 3 个判断分支:- 点列表右侧
+,第一个输入框填:Attack - 再点
+,第二个填:Defend - 再点
+,第三个填:Heal
- 点列表右侧
- 可选设置:
- 取消
Is Case Sensitive:不区分大小写 - 取消
Has Default Pin:删除默认分支(不推荐,无兜底逻辑易报错)
- 取消
- 配置完成后,节点右侧自动出现
Attack / Defend / Heal三个执行输出引脚
步骤 6:给每个分支编写逻辑(打印文本测试)
每个分支连接
Print Text节点区分效果:- Attack 分支:Print Text 内容 =
玩家执行攻击动作! - Defend 分支:Print Text 内容 =
玩家进入防御姿态! - Heal 分支:Print Text 内容 =
玩家使用治疗回血! - Default 默认分支:Print Text 内容 =
未知指令,无法执行!
步骤 7:编译运行测试
- 蓝图顶部点编译 → 保存
- 编辑器点播放,输出窗口会打印对应文本:
- 变量默认值
Attack→ 打印「玩家执行攻击动作!」
- 变量默认值
- 停止播放,修改
PlayerCommand默认值为Test(无匹配),再次播放,触发 Default 打印未知指令。
三、实战案例 1:玩家指令状态判断(完整蓝图逻辑)
需求
读取玩家输入的指令字符串,自动切换攻击 / 防御 / 治疗逻辑,未知指令提示错误。
完整蓝图链路
Event BeginPlay → 获取 PlayerCommand → Switch on String- Case
Attack:打印攻击 + 生成粒子特效 - Case
Defend:打印防御 + 修改角色护盾变量 - Case
Heal:打印治疗 + 角色血量 + 50 - Default:打印错误 + 播放提示音效
扩展操作:动态修改字符串变量切换分支
- 添加按键事件:
键盘F按下事件 - 按键事件连接 SET PlayerCommand,右侧字符串值填
Heal - 按键执行后,再次触发 Switch 即可切换匹配分支,实现运行时动态切换逻辑。
四、实战案例 2:UI 下拉框 ComboBox 字符串匹配(游戏菜单常用)
需求
UI 下拉框选择武器名称,切换对应武器逻辑(Pistol/Rifle/Sword)
-
创建 Widget 蓝图,添加
ComboBox String下拉控件 - 下拉框绑定事件:
On Selection Changed(选中项改变触发)ComboBox搭配Switch on String连线 -
下拉框输出
Selected Item(字符串)连接 Switch on String 的 Selection -
Pin Names 添加:
Pistol、Rifle、Sword -
各分支逻辑:切换武器模型、修改伤害数值、播放切换音效
-
Default:提示「未解锁该武器」
五、常见使用技巧与避坑
1. 快速新增 / 删除分支
- 节点右下角
Add pin一键新增空分支,再去细节面板改名称 - 右键不需要的 Case 执行引脚 →
Remove Execution Pin删除分支
2. 大小写匹配坑
默认
Is Case Sensitive勾选,"attack"和"Attack"是两个不同分支,不需要区分务必取消勾选。3. 空字符串匹配
如果需要匹配空文本,在 Pin Names 添加一行,输入框留空即可捕获空字符串输入。
4. 和 Switch on Name 区别
Switch on String:可读文本、支持中文、适合 UI / 玩家输入Switch on Name:引擎内部标识、性能更高、不建议中文,适合内部状态标记
5. 对比多层 Branch 的优势
多分支(≥3 种)时,Switch 结构横向排布,无嵌套;新增条件仅需在细节面板加 Pin Name,不用新增 Branch 嵌套,维护成本更低。
六、蓝图完整逻辑文字流程图(可直接复刻)
plaintext
Event BeginPlay(启动)
↓(执行线)
获取 PlayerCommand(字符串变量)
↓(字符串引脚)
Switch on String
├─ Case "Attack" → Print Text:攻击动作
├─ Case "Defend" → Print Text:防御姿态
├─ Case "Heal" → Print Text:治疗回血
└─ Default → Print Text:未知指令
感谢您的来访,获取更多精彩文章请收藏本站。
THE END

















暂无评论内容