嘿,朋友!看到你点开这篇教程,我猜你心里可能有点打鼓,或者充满了期待。毕竟,UE5(虚幻引擎5)这名字听起来就挺“重”的,好像全是硬核代码和复杂参数。
别担心,真的。我刚开始玩这玩意儿的时候,盯着那个黑乎乎的界面发呆,感觉像走进了一架波音747的驾驶舱,连哪根杆子是干嘛的都认不全。但当你第一次看到自己在里面搭起来的小场景,或者让一个小车动起来的时候,那种成就感简直爆炸。
今天咱们不整那些虚头巴脑的理论,也不搞什么“第一章、第二章”的八股文。我就当是你旁边那个稍微懂一点的朋友,咱一起坐在那儿,一步步把这个大家伙摸透。咱们先把界面看明白,再学学怎么不写一行代码,就用“连线”的方式让游戏跑起来。这就叫蓝图(Blueprint),UE5里的神技。
第一部分:别被“黑暗模式”吓跑——认识你的作战地图
打开虚幻引擎5(假设你已经装好了,而且没遇到版本兼容的玄学问题),首先迎接你的是一个深邃、现代、有点高冷的默认黑暗主题界面。
1. 顶部的“菜单栏”和“工具栏”:你的百宝箱
最上面那一长条,别嫌它长,它是你随时取用工具的地方。
- 文件 (File):新建项目、保存、打开。新手最容易犯的错误就是——玩嗨了忘记保存。我建议你开个习惯:每完成一个小步骤,Ctrl+S 按一下。这肌肉记忆能救你的命。
- 编辑 (Edit):撤销、重做、复制、粘贴。对了,UE5里有个神技叫“复制组件”,以后做复杂的UI或者重复结构时会用到。
- 视图 (View):这个非常重要!这里藏着“视口显示”(Viewport Display)和“内容浏览器可见性”的开关。比如你渲染太卡了,可以在这里关掉“材质编辑”或者“光照复杂性”,让视口清爽点。
- 窗口 (Window):这是新手最该熟悉的地方。如果你某个面板不见了,别慌,99%的情况是你在“窗口”菜单里把它关掉了,或者不小心拖到角落折叠起来了。这里可以重新调出所有面板。
- 帮助 (Help):实在搞不定,点这个,能跳到官方文档或者社区论坛。
工具栏(菜单栏下面那排小图标)更实用:
- Play (▶):开始测试。
- Pause (||):暂停。
- Step (⏭):单步执行,调试蓝图时必用。
- 新建Actor:添加一个新对象。
- 拾取网格体:从场景里直接拖一个东西到世界里。
2. 中央的“视口”:你的3D舞台
这是占据屏幕最大面积的地方。不管你是从俯视、透视还是侧视看它,这里就是你构建世界的地方。
- 左键:选中物体。
- 右键:旋转视角(在视口内)。
- 滚轮:缩放。
- 中键(滚轮按下):平移视角。
- W / R / T 键:对应移动、旋转、缩放工具。这三个键切换后,你会在物体旁边看到红绿蓝三个箭头或圆圈,分别对应X、Y、Z轴。
- Q 键:进入“绘制模式”,用来快速移动整个场景的光源或摄像机。
小技巧:如果你发现视角乱了,找不到北,按键盘上的Home键,它会把你拉回默认视角。或者在视口左上角有个“视角”下拉菜单,直接选“俯视”、“前视”等,强迫症福音。
3. 右侧:信息洪流——内容浏览器与细节面板
右侧通常是两个大面板,这是UE5的核心工作区。
A. 内容浏览器 (Content Browser) —— 你的仓库
这里存放着你项目里的所有资源:模型、贴图、材质、蓝图、声音、关卡等等。
- 文件夹结构:你可以自己建文件夹,比如
Maps(关卡)、Blueprints(蓝图)、Materials(材质)、Textures(贴图)。养成分类习惯,否则后期你的项目会像个垃圾堆,找个贴图层都得翻半小时。 - 搜索框:右上角有个放大镜,输入名字能快速定位。
- 创建新内容:右键空白处 -> 文件夹(新建文件夹);右键空白处 -> 蓝图类(新建蓝图)。
- 导入:如果你从Blender或Maya导出了一个FBX文件,右键内容浏览器 -> 导入到目录,然后选择你的文件。
B. 细节面板 (Details) —— 外科医生的手术刀
当你选中视口中的某个物体(比如一个Cube,或者一个灯光),右侧下方的“细节”面板会显示这个物体的所有属性。
- 位置、旋转、缩放:最上面三个,直接输入数值,比用手拖更精准。
- 可见性:能不能被玩家看到?能不能被相机看到?
- 物理属性:是不是有碰撞?是不是可移动?
- 组件:这是UE5的精髓。一个“建筑”可能由墙体、地板、屋顶、灯光等多个“组件”组成。点击“+”号可以添加新组件,比如给一个门加上“铰链”动画。
4. 底部:输出日志与命令台
如果你遇到报错,或者想快速输入命令(比如stat fps看帧数),底部的Output Log和命令台是好朋友。新手可以先不用管它,但知道它在那儿,出事时别慌。
第二部分:第一个角色——学会“拖拽”的艺术
好了,界面看明白了,现在咱们动手做个东西。别急,咱们不从复杂的第三人称射击做起,我们先做一个“会跟着鼠标动的小方块”。
步骤1:新建项目
打开UE5,选择游戏 (Games) -> 蓝图 (Blueprint) -> 空 (Empty)。
- 名字:
FirstBlueprint - 渲染路径:选择向前渲染 (Forward Shading) 或者 延迟渲染 (Deferred Shading)。新手推荐延迟渲染,因为效果好看,后期调光照方便。
- 启动设置:勾选包含 starter content (包含入门内容)。这个选项很重要!它会送你一堆现成的模型、材质、蓝图,让你有个地方可以“抄作业”。
点击创建项目,引擎会加载一会儿。等待界面完全变黑再出现视口,这可能需要一两分钟,喝口水。
步骤2:查看 Starter Content
如果右侧内容浏览器是空的,别慌,可能你刚创建的项目还没加载完资源。等几秒,或者在内容浏览器里找一下StarterContent文件夹。里面有一堆BP_FirstPersonCharacter、Mat_Simple之类的东西。这些是你最好的老师,以后做不出来的时候,就拆解它们的蓝图看看人家怎么写的。
步骤3:创建一个简单的关卡
在内容浏览器里,右键 -> 关卡蓝图 (Level Blueprint) 是不对的,我们要创建一个新的关卡。 右键 -> 关卡 (Level) -> 空白关卡 (Empty Level)。 双击这个新的关卡文件,它就会在视口里打开。
现在,从StarterContent文件夹里,找到SM_Cube(一个简单的立方体网格体),把它拖进视口中心。
再找一个Light_Sphere(一个点光源),也拖进去,放在立方体稍微上方一点,这样立方体就被照亮了。
按Play (▶) 键。你会发现,你只是放了一个盒子和一个灯,什么都没发生。这很正常,因为我们还没教它做任何事。
第三部分:蓝图的入门——用“连线”思考
现在,我们来创造“生命”。UE5的蓝图系统,就像是一张复杂的电路图,但比电路图直观一万倍。
核心概念:节点 (Nodes) 和 引脚 (Pins)
- 节点:每一个方块就是一个“指令”。比如“移动”、“旋转”、“播放动画”、“创建粒子”、“等待2秒”。
- 引脚:节点上的小圆点。
- 执行引脚 (Execution Pins):通常是白色的小三角箭头。信号从这里流进去,指令执行完,信号从这里流出来。它决定了顺序。
- 数据引脚 (Data Pins):通常是彩色的小圆点。左边是输入,右边是输出。颜色代表数据类型:蓝色是浮点数(float,就是小数),绿色是布尔(bool,是/否),红色是字符串(string,文字),紫色是对象(reference)。
黄金法则:
- 先连线,后操作:在执行引脚上,从“触发事件”连到“执行动作”。
- 颜色要对:你不能把代表“位置”的向量引脚(通常是绿色或蓝色,取决于具体实现)直接连到“旋转”的旋转引脚上,引擎会报错或者连不上。
- 右键菜单是宝库:在蓝图中,右键点击空白处,你会看到一个搜索框。输入任何你想做的事,比如“移动”、“旋转”、“打印到屏幕”,它都会给你对应的节点。这是新手最快的学习方式。
实战:让小方块跟随鼠标移动
我们回到刚才那个关卡。现在我们要让这个立方体动起来。
第一步:创建蓝图类
在内容浏览器里,右键 -> 蓝图类 (Blueprint Class)。
父类选择Actor。名字叫做BP_MovingCube。
双击打开它。你会看到一个空白的蓝图图表,左边是“事件图 (Event Graph)”,右边是“组件”面板。
在“组件”面板里,你会看到一个默认的Scene根组件。右键空白处 -> 添加组件 -> 静态网格体 (Static Mesh)。
然后在细节面板里,点击Static Mesh旁边的空白框,搜索SM_Cube,选中它。这样,这个蓝图对象就有了一个立方体的样子。
第二步:编写逻辑
点击左上角的“事件图 (Event Graph)”标签。
我们要做的是:每一帧,都更新立方体的位置,让它等于摄像机的位置(或者鼠标指向的位置)。为了简单,我们先让它在Z轴上上下浮动,证明它能动。
- 右键空白处,搜索
Event Tick。双击添加。Event Tick是蓝图里最常用的节点,代表“每一帧都执行一次”。游戏每秒运行60帧,它就会执行60次。
- 右键
Event Tick的右侧执行引脚,搜索Get Actor Location。- 这会得到一个当前立方体的位置(一个三维向量X,Y,Z)。
- 右键空白处,搜索
Set Actor Location。- 这是移动立方体的命令。
- 开始连线:
- 把
Event Tick的输出箭头,连到Get Actor Location的执行输入。 - 把
Get Actor Location的输出箭头,连到Set Actor Location的执行输入。 - 现在,我们需要给
Set Actor Location提供新的位置。从Get Actor Location的位置输出引脚(绿色/蓝色)拉出一根线,连到Set Actor Location的新位置输入引脚。 - 但是,如果我们直接这样连,立方体就不会动了,因为新位置等于旧位置。
- 把
我们需要加点“变化”。
- 右键空白处,搜索
Get World Time Seconds。- 这会得到一个随时间增加的小数(比如1.5, 1.6, 1.7…)。
- 右键空白处,搜索
Multiply。- 我们需要一个系数,让时间变化得更明显一点。搜索
Scalar Parameter或者直接手写一个数字50。 - 把
Get World Time Seconds连到Multiply的一个输入,50连到另一个输入。
- 我们需要一个系数,让时间变化得更明显一点。搜索
- 正弦函数 (Sin):为了让它上下波动,我们需要一个波形。
- 搜索
Sin。把Multiply的输出连到Sin的输入。 Sin函数会输出一个-1到1之间的小数,随时间周期性变化。
- 搜索
- 向量构造:
- 搜索
Make Vector。 Sin的输出连到Make Vector的Z引脚(这是关键!)。- X和Y引脚,我们要保持立方体原来的位置。所以,从
Get Actor Location的X和Y引脚分别拉线,连到Make Vector的X和Y。 - 现在,
Make Vector输出一个“原地位置 + Z轴波动”的新向量。
- 搜索
- 最终连线:
- 把
Make Vector的输出,连到Set Actor Location的位置输入。
- 把
你的蓝图图表现在看起来应该像这样:
Event Tick -> Get Actor Location -> (X,Y,Z拆分) -> Make Vector -> Set Actor Location
同时,Get World Time Seconds -> Multiply -> Sin -> Make Vector (Z轴)
第三步:保存并测试
按Ctrl+S保存蓝图。
回到关卡蓝图或者视口,把内容浏览器里的BP_MovingCube拖进场景里。
按Play。
哇!那个立方体开始上下浮动了吗? 如果没有,检查连线有没有断开,或者引脚颜色是否匹配。有时候UE5会“缓存”旧版本,试着关掉再打开蓝图看看。
如果成功了,恭喜你!你已经完成了你的第一个蓝图逻辑。你没有写一行C++代码,只用鼠标拖拽和连线,就让一个物体“活”过来了。
第四部分:蓝图进阶——从“浮动”到“交互”
浮动太无聊了。让我们加点料,做一个“鼠标悬停变色”的效果。这能让你理解事件 (Events) 和 组件绑定。
步骤1:添加鼠标事件
回到BP_MovingCube的蓝图图表。
- 在“事件图”左上角的搜索框里,搜索
Event Overlap Begin。- 等等,这个需要碰撞盒。我们先确保立方体有碰撞。
- 回到“组件”面板,选中
StaticMesh组件。 - 在细节面板里,找到
Collision部分,确保Collision Presets是BlockAll或者Blueprint。默认应该有碰撞。
- 但更简单的方式是用
OnComponentBeginOverlap。- 在组件面板,右键
StaticMesh组件,选择“在蓝图中添加绑定事件” (Add Event Binding for Component) ->OnComponentBeginOverlap。 - 这会自动生成一个节点。
- 在组件面板,右键
- 同理,添加
OnComponentEndOverlap。
步骤2:改变颜色
我们需要改变立方体的材质颜色。
- 在内容浏览器里,右键 -> 材质 (Material),命名为
Mat_Red。打开它。 - 在材质编辑器的细节面板里,把
Base Color改成红色。 - 保存材质。
- 再创建一个
Mat_Blue,改成蓝色。 - 回到
BP_MovingCube的事件图。 - 从
OnComponentBeginOverlap的输出引脚,右键搜索Set Material。- 选择
Component(因为我们要给静态网格体组件设置材质)。 - 把
Material输入连到Mat_Red。
- 选择
- 从
OnComponentEndOverlap的输出引脚,同样搜索Set Material。- 把
Material输入连到Mat_Blue。
- 把
步骤3:测试
保存,回到关卡。 按Play。 现在,拿着你的“第一人称角色”(如果场景里有)或者直接用鼠标点击立方体(如果设置了点击交互),当碰撞开始时,立方体会变红;离开时,变回蓝色。
为什么这很重要? 你看,你学会了:
- 组件绑定事件:不是靠“每帧检测”,而是靠“引擎自动通知”什么时候撞上了。这叫事件驱动编程,比每帧轮询效率高得多,也更符合游戏开发的思维。
- 动态修改材质:实时改变物体的外观。
第五部分:避坑指南——新手最常踩的“坑”
作为过来人,我必须告诉你几个UE5新手最容易崩溃的瞬间,以及如何避免:
1. “我的蓝图编译报错了!”
别慌。看底部Output Log,或者有红色波浪线的节点。
- 常见错误1:引脚颜色不匹配。比如把“字符串”连到了“浮点数”上。引擎会提示“类型不匹配”。解决:用
Conv Float to String或Conv String to Float节点转换。 - 常见错误2:缺少引用。比如你引用了一个不存在的变量。检查拼写,或者重新声明变量。
- 常见错误3:节点丢失。有时候复制粘贴蓝图,引用的外部资源(如材质、动画蓝图)如果没有一起导入,会显示红色问号。右键节点 -> 重新定位引用。
2. “为什么我的物体不移动?”
- 检查物理:如果物体设置为“移动物体 (Moveable)”,它才能被蓝图移动。在细节面板里,
Mobility改成Movable。 - 检查碰撞:如果物体有“刚体 (RigidBody)”,物理引擎会干涉你的蓝图移动。新手建议先把
Simulate Physics关掉,或者用Set Linear Velocity而不是直接Set Actor Location(后者在某些物理模式下会被忽略)。 - 检查缩放:有时候物体看起来没动,是因为它的“缩放”是1000,你移动了1米,看起来像没动。
3. “为什么帧数这么低?”
- 关闭Lumen:如果你用的是入门级显卡,Lumen(UE5的全局光照)会卡死你。在“项目设置” -> “渲染” -> 把“Lumen”关掉,或者换成“虚拟阴影贴图 (Virtual Shadow Maps)”。
- 简化材质
