虚幻引擎 Switch on String 节点

一、节点基础说明

1. 功能作用

Switch on String字符串多路分支判断节点,等价于代码 switch(string) {case xxx:}

输入一个字符串,自动匹配预设字符串分支执行对应逻辑,无匹配则走 Default 默认分支,替代多层嵌套 Branch,逻辑更整洁。

图片[1]_虚幻引擎 Switch on String 节点_虚幻引擎

Switch on String节点外观

2. 引脚释义

  • In(白色三角 Exec):执行入口,触发判断
  • Selection(紫色字符串引脚):待匹配的字符串输入源
  • 自定义 Case 输出(Case_0/Case_1…):字符串完全匹配时执行该分支
  • Default:所有 Case 都不匹配时执行(可在细节面板关闭)
  • Add pin:快速新增匹配分支

3. 关键属性(细节面板 Details)

图片[3]_虚幻引擎 Switch on String 节点_虚幻引擎

细节面板Pin Names配置
  1. Pin Names:所有匹配的字符串列表,点+新增、垃圾桶删除、双击修改文本
  2. Is Case Sensitive:区分大小写(勾选Attackattack;取消则忽略大小写)
  3. Has Default Pin:取消勾选可移除 Default 分支

二、UE5 完整实操分步操作(从零创建)

步骤 1:打开蓝图,创建执行入口

  1. 打开 UE5,新建 / 打开任意蓝图(Actor 蓝图、关卡蓝图、Widget 蓝图通用,下文用关卡蓝图演示)
  2. 顶部菜单栏:蓝图→打开关卡蓝图
  3. 在图表空白处右键搜索:Event BeginPlay(游戏启动自动触发,作为测试入口)

步骤 2:创建字符串变量(待匹配数据源)

  1. 左侧我的蓝图面板 → 变量栏点 **+ 变量 **
  2. 变量设置:
    • 名称:PlayerCommand
    • 类型:String(字符串)
    • 默认值:Attack(测试用,可改为 Defend/Heal/ 其他文本)
  3. 点击变量旁小眼睛(设为公开可选,非必需),编译保存变量

步骤 3:两种方式添加 Switch on String 节点

方式 A:右键搜索添加(最常用)

  1. 图表空白处右键,输入:Switch on String
  2. 路径:工具→流程控制→Switch→开启字符串,点击生成节点

图片[1]_虚幻引擎 Switch on String 节点_虚幻引擎

右键搜索节点界面

方式 B:从字符串引脚快速生成(快捷)

  1. PlayerCommand变量拖到图表,选择获取 PlayerCommand
  2. 拖动紫色字符串输出引脚向外拉,松开鼠标,弹出菜单选:

    Add a 'Branch' or 'Switch' node... → Make a switch from this pin → String

    自动生成并连线 Switch on String,一步到位

步骤 4:基础连线(执行 + 数据)

  1. Event BeginPlay 白色执行箭头 → 连接 Switch on StringIn 引脚
  2. 获取 PlayerCommand 的紫色字符串引脚 → 连接 Switch on StringSelection

步骤 5:配置匹配分支(核心步骤)

  1. 选中Switch on String节点,右侧打开Details 细节面板
  2. 找到 Pin Options → Pin Names,开始添加 3 个判断分支:
    1. 点列表右侧+,第一个输入框填:Attack
    2. 再点+,第二个填:Defend
    3. 再点+,第三个填:Heal
  3. 可选设置:
    • 取消Is Case Sensitive:不区分大小写
    • 取消Has Default Pin:删除默认分支(不推荐,无兜底逻辑易报错)
  4. 配置完成后,节点右侧自动出现 Attack / Defend / Heal 三个执行输出引脚

步骤 6:给每个分支编写逻辑(打印文本测试)

每个分支连接Print Text节点区分效果:
  1. Attack 分支:Print Text 内容 = 玩家执行攻击动作!
  2. Defend 分支:Print Text 内容 = 玩家进入防御姿态!
  3. Heal 分支:Print Text 内容 = 玩家使用治疗回血!
  4. Default 默认分支:Print Text 内容 = 未知指令,无法执行!

步骤 7:编译运行测试

  1. 蓝图顶部点编译保存
  2. 编辑器点播放,输出窗口会打印对应文本:
    • 变量默认值Attack → 打印「玩家执行攻击动作!」
  3. 停止播放,修改PlayerCommand默认值为Test(无匹配),再次播放,触发 Default 打印未知指令。

三、实战案例 1:玩家指令状态判断(完整蓝图逻辑)

需求

读取玩家输入的指令字符串,自动切换攻击 / 防御 / 治疗逻辑,未知指令提示错误。

完整蓝图链路

Event BeginPlay → 获取 PlayerCommand → Switch on String
  • Case Attack:打印攻击 + 生成粒子特效
  • Case Defend:打印防御 + 修改角色护盾变量
  • Case Heal:打印治疗 + 角色血量 + 50
  • Default:打印错误 + 播放提示音效

扩展操作:动态修改字符串变量切换分支

  1. 添加按键事件:键盘F 按下事件
  2. 按键事件连接 SET PlayerCommand,右侧字符串值填Heal
  3. 按键执行后,再次触发 Switch 即可切换匹配分支,实现运行时动态切换逻辑。

四、实战案例 2:UI 下拉框 ComboBox 字符串匹配(游戏菜单常用)

需求

UI 下拉框选择武器名称,切换对应武器逻辑(Pistol/Rifle/Sword)
  1. 创建 Widget 蓝图,添加ComboBox String下拉控件
  2. 下拉框绑定事件:On Selection Changed(选中项改变触发)
    ComboBox搭配Switch on String连线
  3. 下拉框输出Selected Item(字符串)连接 Switch on String 的 Selection
  4. Pin Names 添加:PistolRifleSword
  5. 各分支逻辑:切换武器模型、修改伤害数值、播放切换音效
  6. 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
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容