一、节点基础认知
1. 作用
Switch on Name 是FName 类型多路分支判断节点,等同于代码 switch(FName),根据输入 Name 值匹配预设分支执行逻辑,匹配失败走 Default 默认分支Epic Games。![图片[1]_虚幻引擎 Switch on Name 节点_虚幻引擎](https://xhyq.com/wp-content/uploads/2026/06/Switch-on-Name.jpg)
2. 核心优势(对比 Switch on String)
- 性能更高:FName 是引擎内部哈希存储,对比速度远快于字符串逐字符对比;大量分支逻辑优先用 Name
- 资源标识原生适配:动画名、插槽名、标签 Tag、骨骼名、音效名、碰撞通道全是 FName,无需 String 转换
- 大小写敏感可控:细节面板可开关
Is Case Sensitive区分大小写
3. 引脚说明
- In(执行输入):触发判断的执行线(如按键、BeginPlay、动画通知)
- Selection(Name 输入):待匹配的 FName 变量 / 节点输出
- 自定义 Case 输出引脚:每个引脚对应一个 Name 值,匹配则执行该分支
- Default(默认输出):无任何匹配时执行,可在细节面板关闭
二、从零添加 & 配置节点 详细操作步骤
步骤 1:打开蓝图(以第三人称角色蓝图为例)
- UE5 编辑器 → 内容浏览器 →
ThirdPerson/Blueprints→ 双击打开BP_ThirdPersonCharacter - 切换到 ** 事件图表(Event Graph)** 空白区域
步骤 2:创建 / 获取 Name 数据源(两种方式)
方式 A:创建自定义 Name 变量(静态赋值)
- 蓝图左侧我的蓝图面板 → 变量「+」
- 变量设置:
- 变量名:
CurrentActionTag - 变量类型:
Name(不要选 String) - 默认值:
Idle - 勾选可编辑实例(方便编辑器面板修改)
- 变量名:
- 点击「编译」保存变量,拖动变量到图表 → 选择获取 CurrentActionTag
方式 B:引擎原生节点输出 Name(动态数据源,实战常用)
常用原生 Name 输出节点:
Get Montage Name(动画蒙太奇名称)Get Socket Name(模型插槽名)Get Actor Tag(Actor 标签)Get Bone Name(骨骼名)Get Platform Name As Name(平台名称转 Name)
步骤 3:添加 Switch on Name 节点
两种添加方法任选其一:
方法 1:右键搜索添加(通用)
- 图表空白处右键,搜索
Switch on Name,点击生成节点 - 刚生成只有
In、Selection、Default三个引脚,无自定义 Case
方法 2:从 Name 引脚快速生成(推荐)
- 拖动「获取 CurrentActionTag」的 Name 输出引脚,向外拖拽松开
- 弹出菜单选择:
Add a Branch or Switch node...→Make a switch from this pin - 自动生成
Switch on Name,Selection 引脚已自动连线
步骤 4:配置匹配分支 Case(核心步骤)
- 选中图表中的
Switch on Name节点,右侧打开 ** 细节(Details)** 面板 - 找到
Pin Options → Pin Names数组,点击数组右侧 **+** 添加匹配项Epic Games - 在新增输入框填入需要匹配的 Name,重复
+添加多个分支:- 第 0 项:
Idle - 第 1 项:
Walk - 第 2 项:
Attack - 第 3 项:
Jump
- 第 0 项:
- 关键参数:
Is Case Sensitive:勾选则区分大小写(Attack≠attack),日常逻辑建议取消勾选Has Default Pin:取消勾选可移除默认分支(无匹配则不执行任何逻辑)
- 配置完成后,节点自动新增
Idle、Walk、Attack、Jump四条执行输出引脚
步骤 5:连线与编写分支逻辑
- 触发执行源(如
Event Tick/E键盘按下)连线到节点In输入 - Name 数据源连线到
Selection - 每个 Case 输出引脚连接对应业务逻辑:
- Idle:播放待机动画
- Walk:播放走路动画
- Attack:播放攻击蒙太奇 + 生成子弹
- Jump:播放跳跃动画 + 施加向上力
- Default:打印日志「未知动作标签」
三、完整实战案例:根据动作 Tag 切换角色动画
案例需求
通过 FName 类型动作标签
CurrentActionTag控制角色播放对应动画,未知标签输出提示日志。完整操作流程
1. 准备资源
- 4 个动画序列:Anim_Idle、Anim_Walk、Anim_Attack、Anim_Jump
- 打开 BP_ThirdPersonCharacter,事件图表操作
2. 创建 Name 变量
变量名:
CurrentActionTag,类型 Name,默认值Idle3. 添加 Switch on Name 并配置分支
Pin Names 数组填写:
Idle、Walk、Attack、Jump,取消大小写敏感4. 搭建完整蓝图链路
- 触发入口:
Event Tick(每帧检测动作标签)→ 连线 Switch on Name 的 In - 获取
CurrentActionTag→ 连线 Selection - 各分支逻辑:
- Idle 分支:Play Animation → Anim_Idle,循环播放
- Walk 分支:Play Animation → Anim_Walk
- Attack 分支:Play Anim Montage → Montage_Attack;Print String「发起攻击」
- Jump 分支:Add Impulse(Z 轴向上力 600);播放跳跃动画
- Default 分支:Print String(文本:未知动作标签,Name=+ 转换 Selection 为 String)
5. 测试验证
- 蓝图点击「编译」「保存」
- 选中关卡内角色实例,右侧细节面板修改
CurrentActionTag:- 修改为
Attack:运行游戏自动播放攻击动画 - 修改为
Run(未配置分支):控制台打印未知动作日志
- 修改为
四、高级实操技巧
1. 动态修改 Selection 实现分支切换
通过
Set CurrentActionTag节点在按键事件修改 Name,实现动态切换:- W 键按下 → Set CurrentActionTag = Walk
- 空格按下 → Set CurrentActionTag = Jump
- 鼠标左键 → Set CurrentActionTag = Attack
2. 快速增删 Case 分支
- 增分支:细节面板 Pin Names 点
+,填入新 Name - 删分支:细节面板 Pin Names 点数组项右侧垃圾桶;或右键节点输出引脚 →
Remove Execution Pin
3. 与动画通知 / 标签联动(高频场景)
动画通知内传递 FName 标签,传递到角色蓝图
Switch on Name,实现动画分段逻辑(攻击前摇、攻击判定、后摇)。4. 性能优化建议
- 大量分支(>5 个)优先
Switch on Name,不要堆叠大量 Branch(If)节点 - 固定枚举逻辑用
Switch on Enum,动态文本标签用Switch on Name,仅展示文本用 Switch on String
五、常见问题排查
- 分支不触发
- 检查 Name 大小写:
Is Case Sensitive是否勾选,输入 Name 与 Case 名称完全一致 - Selection 引脚是否正确连线,变量是否被正确赋值
- 检查 Name 大小写:
- 添加 Pin Names 后节点无新引脚
- 选中节点后重新编译蓝图,刷新图表
- Default 一直执行
- 确认 Selection 的 FName 和所有 Case 值无匹配;打印 Selection 转 String 查看真实值
- 和 Switch on String 混淆
- 数据源是 FName(动画、Tag、插槽)必须用 Switch on Name,强制转换 String 会损失性能
六、简易蓝图逻辑流程图
plaintext
Event Tick(执行触发)
↓
获取 CurrentActionTag(Name数据源)
↓
Switch on Name(匹配判断)
├─ Idle → 播放待机动画
├─ Walk → 播放走路动画
├─ Attack → 播放攻击蒙太奇+打印攻击提示
├─ Jump → 施加跳跃力+播放跳跃动画
└─ Default → 打印未知动作日志
感谢您的来访,获取更多精彩文章请收藏本站。
THE END

















暂无评论内容