观众老爷们大家好 我是邪修KING欢迎来到我的TA-UE游戏引擎博客—入门篇C高门槛精选学习系列衔接上一篇我们完成了 UE 基础面板认知、基础几何体创建、属性修改、材质赋予 4 个核心操作搭建出了静态 3D 场景。本篇我们将解锁 UE 的核心能力 —— 让场景物体产生可交互的动态效果同时结合 C 面向对象知识拆解蓝图的底层逻辑非常适合有 C/C 基础的 UE 新手入门。前置准备1.沿用你上一篇博客的 UE 项目场景中保留已赋予材质的基础几何体以立方体为例2.已熟悉 UE 主界面核心面板掌握 C 类与对象、继承、成员变量 / 函数等基础语法3.引擎版本UE5.0本篇操作全版本通用无版本兼容问题一、核心概念前置用 C 知识快速看懂 UE 术语很多新手学 UE 会被陌生术语劝退但只要你有 C 基础就能一秒对应底层逻辑这也是我们科班生学 UE 的核心优势UE术语对应C概念核心说明Actor类的实例化对象UE 场景中所有可放置、可拥有行为的物体都是 Actor。你上一篇拖入的立方体本质是StaticMeshActor静态网格体 Actor继承自AActor基类和 C 子类继承父类的逻辑完全一致蓝图类C 的类定义蓝图是 UE 的可视化脚本系统一个蓝图类就是一个 C 类的可视化封装蓝图节点对应 C 的函数、变量、流程控制最终都会编译成 C 代码执行蓝图事件C 的回调函数 / 事件驱动比如事件Tick对应每帧执行的循环函数事件BeginPlay对应类的初始化函数按键点击事件对应 C 的按键回调核心都是「触发条件→执行对应逻辑」蓝图变量C 的类成员变量蓝图中创建的变量就是类的成员变量可编辑实例属性对应 C 的UPROPERTY(EditAnywhere)宏可在编辑器中直接修改无需重编译代码二、分步实操3 个核心交互效果从静态到动态实操 1给几何体创建蓝图类为逻辑编写做准备我们上一篇直接在场景中修改的立方体只是一个孤立的实例无法为其编写通用逻辑 —— 就像 C 中我们不能只给单个对象新增函数需要先定义类再实例化对象。**1.**选中场景中已赋予材质的立方体右键 →转为蓝图类**2.**选择项目中的蓝图保存路径命名为BP_CubeTest点击创建**3.**双击打开蓝图类进入蓝图编辑器核心关注 3 个面板—视口预览蓝图对应的物体和主编辑器视口逻辑一致—事件图表编写蓝图逻辑的核心区域对应 C 的代码文件—我的蓝图管理蓝图的变量、函数、事件对应 C 类的成员定义区实操 2实现自动旋转效果理解蓝图执行流程这是最简单的入门逻辑无需输入绑定运行后自动执行帮你快速理解蓝图的执行逻辑和 C 的对应关系。1.在事件图表空白处右键搜索事件 Tick拖入图表中原理说明事件Tick是 UE 的帧更新事件游戏每一帧都会执行该事件下的所有逻辑对应 C 中重写的Tick函数和 C 的 while 循环每帧执行一次逻辑完全一致。2.空白处右键搜索添加本地旋转 拖入图表中原理说明该节点对应AActor类的AddActorLocalRotation方法作用是给物体自身坐标系添加旋转C 中可直接调用该 API。节点默认目标为Self对应 C 的this指针指代当前蓝图类对应的 Actor 本身。3.节点参数设置在旋转参数中给 Z 轴Yaw赋值1.0其余轴保持 0关键知识点节点会自动乘以DeltaTime每帧时间间隔保证不同帧率下旋转速度完全一致这是 UE 开发的核心规范新手最容易忽略这个点导致效果异常。4.逻辑连线将事件Tick的白色执行引脚左侧箭头和添加本地旋转的白色执行引脚连起来原理说明蓝图中的白色引脚是执行流程线对应 C 代码的执行顺序连线的先后就是代码执行的先后和 C 的顺序执行逻辑完全一致。5.点击蓝图编辑器上方的编译→保存回到主场景点击播放按钮即可看到立方体匀速自动旋转对应C代码实现底层逻辑完全一致// 头文件声明#pragmaonce#includeGameFramework/Actor.h#includeBP_CubeTest.generated.hUCLASS()classYOUR_PROJECT_APIABP_CubeTest:publicAActor{GENERATED_BODY()public:ABP_CubeTest();// 重写Tick函数对应蓝图的事件TickvirtualvoidTick(floatDeltaTime)override;protected:// 重写初始化函数对应蓝图的事件BeginPlayvirtualvoidBeginPlay()override;};// 源文件实现#includeBP_CubeTest.hABP_CubeTest::ABP_CubeTest(){PrimaryActorTick.bCanEverTicktrue;// 开启Tick对应蓝图启用Tick事件}voidABP_CubeTest::BeginPlay(){Super::BeginPlay();}voidABP_CubeTest::Tick(floatDeltaTime){Super::Tick(DeltaTime);// 对应蓝图的添加本地旋转节点每帧给Z轴添加1度旋转AddActorLocalRotation(FRotator(0.0f,1.0f*DeltaTime,0.0f));}实操 3键盘控制物体移动实现核心交互这是 UE 交互的核心基础我们将通过 UE 输入系统实现 WASD 键控制立方体前后左右上下移动完美衔接你学过的 C 事件驱动编程知识。步骤 1配置项目输入映射1.点击顶部菜单栏编辑→项目设置在左侧列表找到引擎→输入2.在轴映射分类下点击 号添加 4 个轴映射绑定对应按键轴映射名称绑定按键缩放值作用MoveForwardW1.0向前移动MoveForwardS-1.0向后移动MoveRightD1.0向右移动MoveRightA-1.0向左移动MoveUpSpace1.0向上移动MoveUpCtrl-1.0向下移动3.关闭项目设置窗口配置会自动保存原理说明轴映射对应 C 的浮点值输入范围为 - 1~1。按下对应按键时返回设置的缩放值松开按键返回 0专门用于处理移动、旋转这类连续变化的操作。步骤 2蓝图实现移动逻辑1.回到BP_CubeTest蓝图的事件图表右键搜索我们刚创建的MoveForward轴事件拖入图表中原理说明该轴事件每帧都会执行会返回当前的轴值按下 W 返回 1按下 S 返回 - 1松开返回 0对应 C 中绑定的输入回调函数。2.创建移动速度成员变量在左侧「我的蓝图」→「变量」中点击 号命名为MoveSpeed类型选择浮点型–细节面板中设置默认值为500.0可根据需求调整–勾选「可编辑实例」对应 C 的public成员变量可在场景中直接修改数值无需进入蓝图3.右键搜索获取 Actor 向前向量拖入图表中对应 C 的GetActorForwardVector()方法作用是获取物体自身向前的方向向量保证移动方向跟随物体朝向而非固定世界坐标系。4.右键搜索乘节点创建 2 个乘法节点·第一个乘法节点将「获取 Actor 向前向量」的输出值与「MoveForward 轴事件」的轴值相乘·第二个乘法节点将第一个乘法的结果与MoveSpeed变量、DeltaTime相乘保证不同帧率下移动速度一致5.右键搜索添加 Actor 世界偏移拖入图表中对应 C 的AddActorWorldOffset()方法作用是给物体在世界坐标系中添加位置偏移实现移动。6.逻辑连线将「MoveForward 轴事件」的执行引脚与「添加 Actor 世界偏移」的执行引脚相连将第二个乘法节点的最终结果连入「添加 Actor 世界偏移」的Delta Location参数7.按照完全相同的逻辑完成MoveRight对应获取 Actor 向右向量、MoveUp对应获取 Actor 向上向量的移动逻辑8.点击编译→保存回到主场景点击播放按下 WASD、空格、Ctrl 键即可自由控制立方体移动注意新手容易踩得的坑·移动方向错误检查是否用了「本地向量」而非「世界向量」或轴映射的缩放值设置反了·按键无反应检查项目设置的轴映射名称与蓝图中轴事件名称是否完全一致大小写敏感蓝图是否完成编译·移动速度忽快忽慢检查是否乘以了DeltaTime这是新手最常见的错误实操 4鼠标点击触发材质变色衔接上一篇材质知识上一篇我们学会了在编辑器中给物体赋予材质本篇我们实现运行时交互鼠标点击立方体随机切换材质颜色彻底打通「逻辑→材质」的联动。1.打开上一篇给立方体创建的材质进入材质编辑器–空白处右键添加Vector3 参数命名为BaseColor名称必须记牢大小写敏感–设置默认值为你原本的材质颜色将该参数节点连入「基础颜色」输入引脚–点击保存关闭材质编辑器原理说明材质参数对应 C 类的成员变量可在运行时通过代码 / 蓝图动态修改只有参数化的材质属性才能在运行时实时变更。2.回到BP_CubeTest蓝图的事件图表右键搜索Actor 点击事件拖入图表中该事件会在鼠标点击该 Actor 时触发对应 C 的OnClicked委托。3.右键搜索创建动态材质实例拖入图表中–「目标」参数选择立方体对应的静态网格体组件默认是StaticMeshComponent0–「材质槽索引」保持 0我们的立方体只有 1 个材质槽–将「Actor 点击事件」的执行引脚与该节点的执行引脚相连原理说明只有动态材质实例才能在运行时修改参数静态材质仅能在编辑器中修改对应 C 的UMaterialInstanceDynamic类。4.右键搜索随机 RGB拖入图表中用于生成随机颜色再搜索设置向量参数值拖入图表中。5.逻辑连线–将「创建动态材质实例」的执行引脚与「设置向量参数值」的执行引脚相连–将「创建动态材质实例」的返回值连入「设置向量参数值」的「目标」参数–「参数名称」填写我们在材质中创建的BaseColor必须完全一致–将「随机 RGB」的输出值连入「设置向量参数值」的「值」参数6.点击编译→保存回到主场景点击播放鼠标点击立方体即可看到立方体每次点击都会随机切换颜色四、本篇总结本篇我们从静态场景进阶到动态交互完成了 3 个核心效果的开发核心收获有 3 点1.彻底搞懂了 UE 的 Actor 核心概念用 C 面向对象知识打通了蓝图与 C 的底层逻辑对应关系打破了「蓝图和 C 是两个东西」的误区。2.掌握了蓝图的基础开发流程事件触发→节点逻辑→效果实现理解了 UE 事件驱动的开发思想。3.实现了自动旋转、键盘控制移动、鼠标点击变色 3 个可交互效果完成了从「看场景」到「玩场景」的跨越。下一篇预告我们将学习 UE 的碰撞系统与触发事件实现物体碰撞检测、触发区域交互比如走进区域自动开门、物体碰撞销毁同时深入讲解蓝图的函数封装与代码复用继续完善我们的 UE 入门系列。声明虚幻内容过于复杂图片大约20多张这里整理过后只要配置结合vs2022的对应版本操作基本没问题结合参考配置【UE5教程-运行UE5的最佳配置参考】 https://www.bilibili.com/video/BV1sb421b7LL/?share_sourcecopy_webvd_sourcefd04669a3f0f6a74eab6813325ed25d8