很多人听到”编程”两个字就头大,觉得这是程序员的事,跟美术/设计没关系。

但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 InputAdd 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(触发器):定义什么时候触发这个动作(比如”按下瞬间触发”、”按住持续触发”、”松开时触发”)

使用流程

  1. 在Content Browser里创建Input Action(比如IA_MoveIA_Jump
  2. 创建Input Mapping Context(比如IMC_Default
  3. 在Mapping Context里,把按键绑定到Input Action
  4. 在角色蓝图里,用Enhanced Input节点来监听这些Input Action

UMG UI系统:做游戏界面

UMG(Unreal Motion Graphics)是UE5的UI制作工具。核心是Widget(控件)

创建一个UI界面

  1. 在Content Browser里右键 → User Interface → Widget Blueprint
  2. 选择User Widget作为父类
  3. 双击打开UMG编辑器,界面分几个区域:
    • 设计器(Designer):拖拽UI元素(按钮、文本、图片、进度条等)
    • 图表(Graph):写UI的逻辑(比如按钮点击后触发什么)

常用UI元素

  • Button(按钮):可以绑定On Clicked事件(点击时触发)
  • Text(文本):显示文字,可以绑定变量(比如”血量:” + 血量变量)
  • Image(图片):显示图片,可以做UI图标
  • Progress Bar(进度条):显示百分比(比如血量条、经验条)
  • Slider(滑块):让玩家调整数值(比如音量、亮度)

显示UI

UI创建好了,要把它显示到屏幕上:

  1. 在角色蓝图或者Game Mode蓝图里,用Create Widget节点创建UI实例
  2. Add To Viewport节点把它加到屏幕上
  3. 如果要移除UI,用Remove From Parent节点

碰撞检测:让物体能”碰到”彼此

游戏里很多逻辑是靠碰撞触发的。比如:玩家碰到敌人 → 扣血;玩家碰到药瓶 → 回血;玩家踩到机关 → 门打开。

碰撞的基本设置

  • Collision Presets(碰撞预设):在静态网格体的细节面板里,可以设置碰撞预设(比如Block All=阻挡所有物体,Overlap All Dynamic=允许与动态物体重叠)
  • Collision Response(碰撞响应):可以针对每种类型的物体(WorldStatic、Pawn、PhysicsBody等)分别设置是Ignore(忽略)Overlap(重叠)还是Block(阻挡)

在蓝图里监听碰撞事件

给Actor添加一个Collision Component(比如Box CollisionSphere 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蓝图编程培训课程,从基础节点到完整游戏逻辑,结合实际项目案例。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。