很多人听到”编程”两个字就头大,觉得这是程序员的事,跟美术/设计没关系。
但UE5的蓝图(Blueprint)改变了这个状况。蓝图是可视化编程系统——你不需要写代码,只需要把节点拖出来、连上线,就能实现复杂的交互逻辑。
这篇文章把蓝图的核心知识讲清楚,看完你就能自己写大部分常用的游戏逻辑了。
蓝图是什么?为什么要用它?
蓝图的本质是把代码逻辑用图形化的方式表示出来。每一个节点代表一个函数或者一个变量,节点之间的连线代表数据流或者执行顺序。
蓝图的优点
- 门槛低:不需要学C++语法,美术/设计也能上手
- 迭代快:改逻辑只需要重新连线,不需要编译(C++改一行代码要编译好几分钟)
- 可视化:逻辑流程一目了然,便于团队协作和交接
蓝图的缺点
- 性能不如C++:复杂的逻辑(比如大世界的AI管理)用蓝图会比较慢
- 不适合大型项目:蓝图文件大了之后,加载速度会变慢
- 调试不如C++方便:C++可以用各种调试器,蓝图主要靠”打印字符串”来调试
实际项目中的做法: 用蓝图快速原型(Prototype),确认逻辑OK后,再用C++重写性能关键的部分。或者,让蓝图调用C++写好的函数(蓝图与C++混合编程),兼顾效率和灵活性。
蓝图编辑器界面:先搞清楚每个区域
双击一个蓝图资源(比如BP_Character),会打开蓝图编辑器。界面分几个区域:
- 视口(Viewport):如果这个蓝图是一个Actor,可以在这里摆放它的组件(比如网格体、摄像机、碰撞体)
- 事件图表(Event Graph):写逻辑的地方,最重要的区域
- 我的蓝图(My Blueprint):管理这个蓝图里的变量、函数、宏
- 细节面板(Details Panel):设置选中节点的参数
蓝图基础:事件、变量、函数
事件(Event)
事件是逻辑的起点。常见的事件:
Event BeginPlay:游戏开始时触发(适合做初始化)Event Tick:每一帧触发(适合做持续监测,但不要用太多,会影响性能)Custom Event:自定义事件,可以在其他地方调用输入事件:比如Event BeginTouch(触屏开始)、Event ActorBeginOverlap(碰撞开始)
变量(Variable)
变量用来存储数据。蓝图支持这些类型的变量:
- Boolean:真/假(比如”门是否开着”)
- Integer:整数(比如”血量”、”得分”)
- Float:浮点数(比如”移动速度”、”体积”)
- String:字符串(比如”玩家名字”)
- Vector:三维向量(比如”位置”、”旋转”、”缩放”)
- Rotator:旋转(用俯仰/偏航/翻滚三个角度表示)
- Class Reference:引用一个类(比如”要生成的敌人类型”)
- Object Reference:引用一个对象(比如”玩家控制的角色”)
在细节面板里可以设置变量的默认值,以及是否”实例可编辑”(Instance Editable)—— 如果勾选,在关卡里放置这个Actor时,可以在细节面板里改这个变量的值。
函数(Function)
函数是一段可以重复调用的逻辑。比如”计算两点之间的距离”、”让角色跳跃”,这些逻辑可能会在很多地方用到,写成函数就不用重复写。
创建函数:在My Blueprint面板里,点+号添加函数。函数可以有输入参数和返回值。
流程控制节点:让逻辑”聪明”起来
只靠事件和变量,只能做很简单的逻辑。要让逻辑有”判断力”,需要用流程控制节点。
Branch(分支)—— 相当于if判断
Branch节点有一个Condition引脚(接受Boolean值)。如果Condition是真,执行True引脚后面的逻辑;如果是假,执行False引脚后面的逻辑。
例如:检测玩家血量是否小于0,如果是,触发”死亡”逻辑;如果不是,继续游戏。
Sequence(顺序执行)
Sequence节点让多个逻辑按顺序执行(而不是同时执行)。它有多个输出引脚(Out 0、Out 1、Out 2…),按顺序执行。
ForLoop / ForEachLoop(循环)
当你需要对一组数据做同样的事情,用循环。
ForLoop:从0数到N,每次执行循环体ForEachLoop:遍历一个数组(Array),对每个元素执行循环体
Delay(延迟)
Delay节点让逻辑等待一段时间后再继续执行。比如:门开始打开 → 等待1秒 → 门完全打开 → 执行后续逻辑。
Timeline(时间轴)—— 非常强大的节点
Timeline让数值随时间变化。比如:
- 让门在1秒内,从0度旋转到90度(开门动画)
- 让灯光在2秒内,从暗变亮(天亮效果)
- 让摄像机在3秒内,从A点移动到B点(运镜效果)
双击Timeline节点,可以打开编辑器,在里面画”数值-时间”曲线。
角色控制:用蓝图实现第三人称移动
UE5有现成的第三人称模板,但理解底层逻辑很重要。一个完整的角色控制蓝图包含:
1. 角色移动
角色的移动靠Character Movement Component。在蓝图里调用:
Add Movement Input:让角色往某个方向移动Get Actor Forward Vector/Get Actor Right Vector:获取角色的前后/左右方向
结合输入事件(比如按下W键),就能让角色移动。
2. 视角控制
第一/第三人称的视角控制,一般用Spring Arm Component(摄像头臂):
- Spring Arm会自动处理”摄像头被墙挡住”的情况(会自动缩短臂长)
- 用
Add Controller Yaw Input和Add Controller Pitch Input来旋转摄像头
3. 跳跃
调用Jump函数,角色就会跳起来(前提是Character Movement Component里的Jump Z Velocity设置好了)。
Enhanced Input系统:UE5的新输入系统
UE5把旧的输入系统(Input设置里直接绑定按键)换成了Enhanced Input,更灵活。
Enhanced Input的核心概念
- Input Action(输入动作):定义一个”动作”,比如”Move”、”Look”、”Jump”
- Input Mapping Context(输入映射上下文):把按键映射到Input Action(比如”W键 → Move动作,向前方向”)
- Modifiers(修饰器):对输入值做处理(比如把鼠标移动转换成视角旋转)
- Triggers(触发器):定义什么时候触发这个动作(比如”按下瞬间触发”、”按住持续触发”、”松开时触发”)
使用流程
- 在Content Browser里创建
Input Action(比如IA_Move、IA_Jump) - 创建
Input Mapping Context(比如IMC_Default) - 在Mapping Context里,把按键绑定到Input Action
- 在角色蓝图里,用
Enhanced Input节点来监听这些Input Action
UMG UI系统:做游戏界面
UMG(Unreal Motion Graphics)是UE5的UI制作工具。核心是Widget(控件)。
创建一个UI界面
- 在Content Browser里右键 → User Interface → Widget Blueprint
- 选择
User Widget作为父类 - 双击打开UMG编辑器,界面分几个区域:
- 设计器(Designer):拖拽UI元素(按钮、文本、图片、进度条等)
- 图表(Graph):写UI的逻辑(比如按钮点击后触发什么)
常用UI元素
- Button(按钮):可以绑定
On Clicked事件(点击时触发) - Text(文本):显示文字,可以绑定变量(比如”血量:” + 血量变量)
- Image(图片):显示图片,可以做UI图标
- Progress Bar(进度条):显示百分比(比如血量条、经验条)
- Slider(滑块):让玩家调整数值(比如音量、亮度)
显示UI
UI创建好了,要把它显示到屏幕上:
- 在角色蓝图或者Game Mode蓝图里,用
Create Widget节点创建UI实例 - 用
Add To Viewport节点把它加到屏幕上 - 如果要移除UI,用
Remove From Parent节点
碰撞检测:让物体能”碰到”彼此
游戏里很多逻辑是靠碰撞触发的。比如:玩家碰到敌人 → 扣血;玩家碰到药瓶 → 回血;玩家踩到机关 → 门打开。
碰撞的基本设置
- Collision Presets(碰撞预设):在静态网格体的细节面板里,可以设置碰撞预设(比如
Block All=阻挡所有物体,Overlap All Dynamic=允许与动态物体重叠) - Collision Response(碰撞响应):可以针对每种类型的物体(WorldStatic、Pawn、PhysicsBody等)分别设置是
Ignore(忽略)、Overlap(重叠)还是Block(阻挡)
在蓝图里监听碰撞事件
给Actor添加一个Collision Component(比如Box Collision、Sphere Collision),然后在蓝图里:
- 拖入这个Collision Component → 右键 → Add Event →
On Component Begin Overlap(开始重叠时触发) - 在事件里写逻辑(比如”如果重叠的Actor是玩家 → 扣血”)
招聘需求参考(Boss直聘,2026年6月)
看了60多个”UE5蓝图程序员”职位,总结一下要求:
- 熟练使用蓝图:能独立完成角色控制、UI、交互系统
- 理解Enhanced Input系统:知道怎么设置Input Action和Mapping Context
- 会用UMG:能做完整的游戏UI(血条、菜单、HUD)
- 了解动画蓝图:知道怎么让角色播放正确的动画
- 加分项:会C++(能看懂C++代码,或者能用C++写性能关键的逻辑)、会用GAS(Gameplay Ability System)
- 作品集要求:至少1-2个完整的蓝图项目(比如一个第三人称动作游戏Demo,有移动、跳跃、攻击、UI)
相关课程: 火星人教育UE5蓝图编程培训课程,从基础节点到完整游戏逻辑,结合实际项目案例。

评论(0)