快捷键
右键 + wasd 移动镜头位置
右键 + scroll 改变镜头移动速度
ctrl + L 平滑改变lighting角度
导出时勾选full rebuild,导出为shipped版本时注意是否源码中有development only的node,可以勾选include debug,不然导出的时候会报错
Material
Fresnel 节点控制不同角度反射不同高光的程度
- Material Domain(材质领域)
决定该材质用在什么地方,即材质的应用目标对象。
Surface(表面):默认选项。用于一般的 3D 网格体(Static Mesh、Skeletal Mesh、Terrain 等)表面。
Deferred Decal(延迟贴花):用于贴花(Decal)。例如墙面上的血迹、弹孔、脚印或地面上的积水污渍。
Light Function(灯光函数):用于控制灯光投射的掩码或动画模式(如窗户穿过的树影、投影仪、手电筒光束效果)。
Volume(体积):用于体积效果,如结合异构体积(Heterogeneous Volumes)或体积雾(Volumetric Fog)制作烟雾、云层、火焰等。
Post Process(后期处理):用于后期处理体积(Post Process Volume)或摄像机。常用于全屏特效,如卡通描边、夜视仪、热成像、画面扭曲等。
User Interface(用户界面):用于 UMG UI 控件或 HUD 元素。
- Blend Mode(混合模式)
决定材质的颜色如何与背景/背后已有的画面进行混合,主要影响透明度和像素深度写入。
Opaque(不透明):默认选项。完全不透明。性能最好,支持完整的 G-Buffer 深度写入和复杂光照计算。适用于绝大多数墙体、角色、道具等。
Masked(遮罩):非黑即白的单色透明(只有完全透明和完全不透明,不支持半透明渐变)。使用 Opacity Mask 属性和裁剪阈值(Clip Value)。适用于铁丝网、树叶、栅栏、草地等。
Translucent(半透明):支持平滑的 alpha 梯度透明度。使用 Opacity 输入。适用于玻璃、水、烟雾、粒子效果。注意:性能开销较大,且容易出现半透明排序问题(Sorting issues)。
Additive(叠加/加色):将材质颜色直接加到背景颜色上,越叠加越亮,忽略阴影。适用于全息投影、激光、魔法光束、火焰粒子。
Modulate(正片叠底/乘色):将材质颜色与背景颜色相乘(背景颜色 × 材质颜色)。适用于变暗效果,如黑烟、投影、画面遮罩。
AlphaComposite (Premultiplied Alpha):用于预乘 Alpha 的纹理,通常在特定的 UI 材质或特定 Vance 渲染流程中使用。
- Shading Model(着色模型)
决定材质对光照的物理反应机制,即表面如何反射光线以及需要哪些材质参数输入。
Default Lit(默认光照):默认选项。基于物理的渲染(PBR)标准模型,结合 Base Color、Roughness、Metallic、Specular 和 Normal。适用于绝大多数常规材质(金属、塑料、木材、石材等)。
Unlit(无光照):不受场景中任何灯光和阴影影响,仅输出 Emissive Color(自发光颜色)。适用于 UI、自发光屏幕、粒子火焰、后期效果、天空盒。性能极高。
Subsurface(次表面散射 / SSS):模拟光线穿透材质并在内部散开的效果。适用于蜡烛、牛奶、玉石、植物叶片等。
Subsurface Profile(次表面配置文件):专为高精度皮肤(角色面部)设计的超真实 SSS 模型,结合预设的皮肤配置文件使用。
Clear Coat(清漆/双层反射):模拟表面有一层透明薄膜的材质(如碳纤维、车漆、打了蜡的地板、涂漆木材)。提供第二个法线和粗糙度控制。
Two Sided Foliage(双面植物):专为树叶、花瓣设计。模拟光线从背光面穿透到朝光面的次表面透光效果。
Hair(头发):专为头发和毛发设计的各项异性高光与光散射模型。
Cloth(布料):专为织物、绒布设计,包含布料边缘的微纤维光泽(Fuzz/Pre-integrated Shading)。
Eye(眼睛):专为眼球结构(虹膜、角膜反射、晶状体折射)设计的专用物理模型。
SingleLayerWater(单层水):虚幻引擎用于轻量化高效水体渲染的内置模型,支持焦散、深度衰减和折射。
Fresnel 节点的 Exponent代表随着视线变化fall off是快还是慢,reflect fraction代表视线接近表面时反光有多少。
这个节点非常有意思,可以理解为一个mask,normal越偏离视线则该区域的intensity越强
Cinematic
将jpg sequence 节点的detail中的file name format 加入 {version}字段来让每次output的文件不覆盖之前的文件
功能
Auto Exposure 的作用:
- 动态调整亮度:当玩家进入一个明亮或黑暗的区域时,系统会自动调整屏幕的整体亮度,使得场景中的细节更加清晰可见。
- 真实感:通过模拟人眼或相机对不同光照环境的适应过程,提升场景的沉浸感。例如,从一个明亮的室外进入阴暗的房间,眼睛需要一段时间适应。
- 提高可见性:确保场景中不会有太亮或太暗的区域,避免过曝或欠曝的现象。
Message Call
- (Message) 代表该接口方法是“消息调用”,它不会直接执行,而是 发送一个调用请求
给目标对象,让目标对象自己决定是否实现该接口并执行逻辑。 - 这是 动态调用,而不是直接调用 事件。
- 适用于 目标对象可能没有实现该接口的情况,不会导致蓝图崩溃。
操作
Create - Volume - post process volume 中 mastering mode 改为manual 并将属性更改为infinite extent以应用于全局,开启exposure compensate,至此auto exposure不会再进行补正
light shaft bloom 开启后光线有丁达尔效应
Import多个material合并成一个物体
在Content Browser中右键选择 Blueprint Class,选择父类为 Actor。
在组件面板中点击 Add Component,添加三个 Static Mesh 组件。
分别将这三个组件对应到你的炸弹模型的三个部分。
创建总的game mode之后要在level中的world setting进行override
设置碰撞体
在 Content Browser 中双击打开你的蓝图。
添加碰撞组件:
点击左上角的 Add Component,选择 Sphere Collision(或者 Box Collision)。
命名为 Collision,并调整大小覆盖整个炸弹模型。
检查碰撞设置:
选中 BombCollision,在右侧的 Details 面板中找到 Collision 部分。
设置 Collision Presets 为 OverlapAllDynamic,确保它能检测到其他物体的重叠。
勾选 Generate Overlap Events。
绑定碰撞事件:
选中 BombCollision,在 Details 面板向下滚动,找到 OnComponentBeginOverlap。
点击 + 号,自动跳转到事件图(Event Graph)。
编写逻辑:
事件节点: OnComponentBeginOverlap(当有物体与炸弹碰撞时触发)。
添加 Destroy 节点:
在空白处右键,搜索 Destroy Actor,将其连接到事件的执行输出。
目标设置为 Self,表示销毁当前炸弹。
(可选)添加条件判断:
如果你只想让炸弹和特定对象碰撞时消失,可以在 OnComponentBeginOverlap 和 Destroy Actor 之间添加 Cast To 节点,判断 Other Actor 是否是特定类型(例如玩家或子弹)。
Collision 和 Physics似乎不能一起启用,若启用了Physics则Hit event就是overlap
实现上下移动
创建蓝图:
在 内容浏览器 右键 → Blueprint Class(蓝图类)。
选择 Actor,命名为 BP_MovingCube。
双击打开蓝图。
添加组件:
在 Components 面板,点击 + Add,添加 Static Mesh(静态网格体)。
在 Details 面板设置网格为 Cube(方块)。
创建 Timeline:
在 Event Graph(事件图表)中,右键搜索 Add Timeline,命名为 MoveTimeline。
双击 MoveTimeline 进入编辑器:
添加 Float 轨道(点击 +)。
右键时间轴 → Add Key:
Key 1:时间 0s,值 0。
Key 2:时间 2s,值 200(表示上升 200cm)。
选择 Float Track 并勾选 循环 (Looping) 让方块持续移动。
在事件图中设置位置:
在 MoveTimeline 的输出 Update 连接到 SetActorLocation。
获取 GetActorLocation,然后 用 Make Vector 只修改 Z 轴:
(X = 保持不变, Y = 保持不变, Z = Timeline 输出值)
启动 Timeline:
在 BeginPlay 事件连接 Play(开始播放)。
可以将timeline的输出固定为0到1这样可以用乘以一个数值的方式来控制最终的输出,比如用来控制输出的高度和速度。
实现简单交互
Blueprint - Interact BluePrint - rename the function
Edit - Project setting - Input - interact 设置交互键位
在角色中创建Interact Event(Input) - Getting overlapping actors - For each loop with break -
- ArrayElement - Does Implement Interface - Branch (this is the loop body for the For Loop)
之后 在要交互的物体的Class Setting中设置interface为创建好的BP - True - 连接到这个object的interact interface(node) 到此为止loop body结束
实现简单的Fade Away动画
Material Editor中Opaque模式设置为Mask - 将Opaque Mask 的输入设置为DitherTemporalAA(这个node可以让material“分散”而达到视线可以穿过的效果) - promote to parameter 这样在level sequence中就可以调节opacity了
在某个事件之后先创建sequence player 之后再Play
Level Sequence更适用于过场动画
BLUEPRINT
左侧菜单栏里可以点击加号创建新的变量
EventTick 每一帧都会访问的事件
AddActorWorldOffset 更新玩家的位置,sweep选项若开启则遇到障碍后玩家停止移动
Get Player Character - Get Actor Location 获取玩家位置。注意这和get player controller不一样!
SpawnActorFromClass 可以选择一个BP类进行生成
右键component - Event - begin overlap 某一个事件会因为和这个组件重叠时执行
Remove from Parent 主要用于 移除 UI 界面(Widget)
Sequence Node 先执行0的再执行1的
Get all actors of Class 选中某个类的所有object
在content browser中右键 - user interface - widget blueprint 创建组件蓝图
create widget 这个事件用于创建蓝图 - 选择widget的reference - 不要忘了最后add to viewport
SetActorLocation 设置玩家坐标
拖动连接过成功按R添加一个reroute node