做独立游戏或者短剧级 CG 的开发者,应该都有过这种“看上去很燃,做出来很垮”的经历:技能设定写着“万剑归宗”,一进引擎只有几根半透明的剑形 Static Mesh 硬邦邦往下掉;说好了是“SSS 级仙术”,结果材质调完一点次表面散射的感觉都没有,怪物皮肤像塑料,剑光像 LED 灯管。
最近在 UE5 里复刻“万剑归宗・苍曜穹殛”这类大规模清场技能时,把整个流程从头到尾走了一遍:从 SSS 材质、Niagara 粒子、蓝图接口事件触发,到用物理资产(Physics Asset)做伤害判定,再到最后打包时 DLSS、渲染设置、报错排查。这篇文章不聊剧情和特效审美,只聊 UE5 里的落地实现,把“30 秒灭尽深渊妖潮”这套效果拆成可以照着做的技术模块。
文章适合三类人:刚接触 UE5 想搞清 Niagara 和材质关系的初学者、被“渲染层错误”和打包后特效失效困扰的进阶开发者,以及想用蓝图而不是 C++ 完成整套技能逻辑的独立游戏开发者。读完你能掌握 SSS 材质参数调法、基于 Niagara 的大规模剑气系统设计、蓝图接口下的群体伤害判定,以及物理资产当 Hitbox 的正确打开方式。
1. 拆解“万剑归宗・苍曜穹殛”背后的 UE5 技术点
标题里的“SSS 级仙术”其实是个双关:既是“SSS(Subsurface Scattering,次表面散射)”这张渲染层面的牌,也是“很厉害”的形容。UE5 渲染相关的热搜里,SSS、渲染设置、数字孪生里的光照与材质出镜率一直很高,但很多人把注意力放在 Lumen 全局光照上,忽略了真实感提升最大的几个点:材质质感、粒子表现、碰撞判定,以及最后的性能预算。
1.1 这套技能效果需要哪些 UE5 模块
“万剑归宗・苍曜穹殛”从视觉拆解来看,至少有四层:
| 表现层 | 对应 UE5 技术模块 | 说明 |
|---|---|---|
| 妖潮皮肤质感 | SSS 材质 / Subsurface Profile | 怪物皮肤、角质、半透膜在逆光下产生透光红晕 |
| 万剑阵列 | Niagara 粒子 + Static Mesh 发射器 | 大量剑形网格体在场景中排布、旋转、飞射 |
| 苍曜天光 | 定向光 + God Ray + 后期 Bloom | 技能高潮时的体积光和辉光 |
| 灭尽判定 | 蓝图接口 + 物理资产 Hitbox | 剑气掠过时对范围内敌人群体结算伤害 |
1.2 为什么拆成“表现 + 判定”两层
游戏开发里最坑的写法是把伤害结算绑在粒子碰撞事件上。Niagara 粒子碰到怪物就给伤害,看起来省事,但规模化后问题很大:粒子数量一多,碰撞检测开销指数上涨;粒子生命周期和伤害帧循环耦合后,技能节奏难调;同时 Hitbox 用的是粒子事件而不是物理资产,无法复用怪物已有的骨骼碰撞。
所以这篇教程的核心思路是:Niagara 只负责“看得见的剑”,物理资产和蓝图接口只负责“算得到的伤”,两者通过场景查询和事件广播解耦。
2. 环境准备与版本说明
UE5 的不同版本之间,Niagara、物理资产、渲染设置面板有差异,尤其是 DLSS 插件和皮肤渲染相关的 Subsurface Profile 界面,不同版本可能不完全一样。下面以一套常见环境为例,重点是演示操作思路,而不是绑定死某个版本。
2.1 建议环境
| 项目 | 建议配置 | 说明 |
|---|---|---|
| Unreal Engine 版本 | UE 5.1 ~ 5.4 | 高版本 Niagara 和渲染管线更稳定,低版本需调整个别节点 |
| 操作系统 | Windows 10/11 | 测试 DX12 和 SM6 |
| 渲染 API | DX12 | 使用 Lumen、Virtual Shadow Map 时优先 DX12 |
| 目标平台 | PC 或 PS5/Xbox | 移动端需降级粒子规模,见下文性能优化 |
| IDE | Rider / Visual Studio 2022 | 需要编译 C++ 时使用 |
| 素材 | 剑形 Static Mesh + 怪物 Mannequin 或自定义骨骼模型 | 文章示例用引擎自带资源替代 |
2.2 需要开启的插件和项目设置
进入项目后先确认以下插件:
- Niagara:UE5 默认启用。
- NVIDIA DLSS:不同版本插件名可能叫“NVIDIA DLSS”或“NVIDIA DLSS Frame Generation”,按实际版本启用。DLSS 对大量粒子 + Lumen 场景帮助很大,但需要项目开启“支持目标平台”的对应 RHI。
- Mesh Description/Mesh Stencil等:如果要做剑身描边或 Stencil 轮廓,需要开启 Mesh Stencil。
- Movie Render Queue:如果要录制 CG 展示视频,需要开启并设置抗锯齿方式。
需要强调的是,DLSS 这类技术依赖显卡驱动和插件版本,打包之后是否生效,必须在打包版本里实机验证,不能用编辑器里的性能表现代替。
3. SSS 材质:让妖潮从“塑料感”变成“半透肉质”
SSS 效果就是次表面散射。简单说,光打进半透明材质后,在内部发生散射,再从另一个位置射出。最典型的效果就是阳光下耳朵会透出红晕。
3.1 普通材质和 SSS 材质的区别
标准光照模型(Default Lit)假设光线只从表面反射。而 Subsurface 材质模型会额外计算光线进入表面后的散射。UE5 里实现方式有两种:
- Subsurface Profile:最常用,适合皮肤、蜡烛、玉石。需要在材质里引用一个 Subsurface Profile 资产。
- Thin Translucent Subsurface:适合树叶、耳廓、薄片状半透明物。
对妖潮怪物来说,推荐使用 Subsurface Profile,因为它能独立控制散射颜色、半径和不透光程度。
3.2 创建 SSS 材质步骤
第一步,内容浏览器中右键创建Subsurface Profile资产。打开后关注的参数:
- Scatter Radius(散射半径):控制光在材质内部扩散距离。数值越大,整体越像玉石;数值太小,透光范围就只集中在边缘。
- Subsurface Color(次表面颜色):光散射后呈现的颜色。妖潮皮肤可以给暗红色或者紫红色,因为内部血液和能量的颜色就是这种。
- Boundary Color Bleeding:控制边界处颜色渗透,这个值调高会让边缘更红更透。
第二步,创建材质,Shading Model 选择Subsurface,然后把你创建的 Subsurface Profile 赋给材质里的Profile参数。
一个简易材质网络思路如下:
- Texture BaseColor 连到 Base Color;
- Texture Normal 连到 Normal;
- Constant3 Vector 深红色连到 Subsurface Color;
- 配合一个 Scalar Parameter 控制 Scatter Radius;
- Opacity 不透明,因为怪物身体是实心的;
- 如果想要边缘光效果,还可以用 Backlit 参数混合一个 Fresnel。
3.3 为什么你的 SSS 看不出效果
常见原因有三个:
- 灯光类型不对。SSS 最吃逆光和强点光源。放一个平行光从怪物背后打过来,让边缘透光,效果立刻比正面光好。
- Scatter Radius 太大或太小。太大整个身体都像是蜡做的,太小又和普通材质没区别。一般先从 1~3 开始调。
- 没有用 Subsurface Profile,只改了 Shading Model。如果 Material 的 Subsurface Profile 没有赋值,默认散色值是纯黑,等于没有 SSS。
下面是一段参考材质连线描述,不是完整蓝图,而是表达思路:
Material Domain: Surface Shading Model: Subsurface Subsurface Profile: SP_AbyssMonster BaseColor: T_AbyssSkin_BaseColor Normal: T_AbyssSkin_Normal Subsurface Color: 常量 (R=0.6, G=0.02, B=0.03, A=1.0) Scatter Radius: Scalar Parameter 默认 2.03.4 剑身材质:苍曜色金属 + 自发光
剑体的“苍曜”效果和 SSS 无关,属于金属 + 自发光 + 各向异性高光。建议用Clear Coat + Anisotropy或者Default Lit + Emissive。
- BaseColor 给深青色或蓝黑色。
- Metallic 调 0.8~1.0。
- Roughness 给 0.1~0.3,保留镜面高光。
- Emissive 通道用来接收粒子或者材质的“激活”参数。可以让剑在入场前不发光,飞射后变亮;可以用一个 Scalar Parameter 或者 Niagara 粒子属性驱动。
4. Niagara 实现“万剑归宗”剑阵与剑雨
Niagara 是 UE5 的粒子系统方案,比 Cascade 强在 GPU 模拟、事件和数据结构灵活性。要做出万剑归宗,不需要动 C++,纯 Niagara + 蓝图就能完成。
4.1 总体思路:一个系统里分层实现
一个大技能通常不要只做一个发射器,而是拆成多个发射器或一个发射器里多个 Particle Spawn 阶段:
| 阶段 | 效果 | 实现方式 |
|---|---|---|
| 蓄力 | 剑从地面/背后浮起 | 位置初始化 + 延迟出现 |
| 列阵 | 剑围绕主角形成圆环阵列 | 使用 Polar Coordinates 或旋转矩阵计算位置 |
| 飞射 | 剑向前/向下倾泻 | Velocity 模块 + 朝向运动方向 |
| 消散 | 剑消失并留下拖尾 | Kill Particles 或 Lifetime 结束 |
4.2 创建剑气发射器
右键点击内容浏览器,选择FX -> Niagara System,然后创建一个使用Empty的系统。在系统中添加一个Sprite Renderer或者Mesh Renderer的发射器。
如果是“万剑”,自然要用静态网格体作为粒子:
- 渲染器改为Mesh Renderer。
- 把剑的 Static Mesh 指定到Mesh。
- 在发射器属性里开启Local Space,根据是否需要跟随玩家运动来决定。
- 粒子数量从 500 到 3000 不等,按平台性能调整。
4.3 让剑围成圆环
位置初始化不能全部是随机,需要让粒子沿着一个圆环分布。Niagara 里可以用Initialize Particle模块,然后在其中用自定义表达式或者脚本实现圆环坐标。
一个常见做法是在Spawn时设置:
// 伪代码:在 Niagara Module 中按粒子索引生成圆环位置 float Angle = (ParticleIndex / TotalParticles) * TWO_PI; float Radius = 400.0f; Particle.Position.X += cos(Angle) * Radius; Particle.Position.Y += sin(Angle) * Radius;在 Niagara 节点编辑器里,可以通过Particles.Position和Emitter.Index做成蓝图节点连线,也可以用Calculate Angle from Index的模块。
另一个更轻松的方案:在Spawn Burst Instantaneous里给数量 N,然后开启Location - Mesh Surface或Location - Cylinder,把 Cylinder 的半径设成固定值,然后给粒子一个初速度向圆外。不过这样不是严格圆环,更可控的还是数学排列。
4.4 让剑呈“万剑齐发”飞向敌人
粒子生成后,给一个速度方向。方向应该是玩家锁定目标点或向前方向。可以使用Initialize Particle -> Velocity模块:
- 如果是向前扇形攻击,给一个圆锥方向,速度向量 = Forward + Random Cone。
- 如果是向下剑雨,速度方向 = Downward,并在粒子 Lifetime 中通过Scale Sprite Size或Scale Mesh拉长剑身,形成速度感。
- 还可以用Drag模块模拟空气阻力,让剑气飞行距离更自然。
为了配合技能时间线,建议用Emitter State -> Loop Behavior设置固定循环次数,或者用Spawn Burst分波次生成。30 秒灭尽一批妖潮,可能需要连续 3~5 波飞行剑雨,所以 Niagara System 触发的讲究在于蓝图的调用时机。
4.5 苍曜天光:体积光和后期 Bloom
“苍曜穹殛”这类大招基本都要配合天光变化。这一步不是粒子,而是灯光和后期:
- 场景里放一个 Directional Light,技能触发前亮度调低,颜色偏冷;
- 触发大招时用 Timeline 把灯光颜色切换到苍蓝色,强度提高;
- 加一个 Exponential Height Fog,让远处有体积感;
- 后期处理体积(Post Process Volume)里开启 Bloom,Intensity 从 1 拉到 3~5 之间;
- 如果要 God Ray 效果,可以通过光轴(Light Shaft)或体积雾实现。UE5 里常见做法是设置雾的散射系数,并在光源上开启大气太阳光。
这样“天穹苍曜”的压迫感就有了。
5. 蓝图接口与伤害判定:用物理资产当 Hitbox
视觉上,剑飞过去很好看;但敌人有没有扣血,是另一套逻辑。这也是很多新手做“万剑归宗”失败的地方:粒子会穿模,伤害却不会触发。
5.1 蓝图接口:让技能表现和伤害结算解耦
UE5 里蓝图接口和事件分发器是两回事。接口更多用于“规定某个 Actor 必须有某个方法”,适合用在所有怪物、玩家、可交互物件都实现同一个触发入口的场景。
创建一个蓝图接口BPI_Damageable:
- 接口函数名:
ReceiveSkillHit - 输入参数:
Instigator、DamageAmount、DamageType - 输出参数:可选,比如是否命中、暴击等。
所有怪物蓝图都继承实现这个接口:
事件 ReceiveSkillHit -> 获取自身 HP -> HP - DamageAmount -> 播放受击动画 Montage -> 生成受击特效 Niagara -> 如果 HP <= 0: 执行死亡逻辑而技能侧只需要拿到范围内怪物,调用它的接口即可,不需要关心怪物内部怎么处理受伤和死亡。
5.2 大规模伤害判定:Sphere Overlap + 接口广播
扇形或圆形范围技能,最直接的实现是:
- 在角色蓝图里拿到施法点位置;
- 使用
Sphere Overlap Actors或Box Overlap Actors节点; - 过滤掉非敌人 Actor(比如带某个 Tag 的);
- 对每个敌人调用
ReceiveSkillHit接口; - 如果要用剑气逐次飞行打到敌人,就需要每帧或每 0.1 秒做一次 Overlap,而不是只在施法瞬间结算一次。
// 伪代码:蓝图节点流程 Sphere Overlap Actors Class Filter: BP_EnemyBase Radius: 1000.0 For Each Overlapped Actor: If Actor Implements BPI_Damageable: Exec ReceiveSkillHit(GetPlayerPawn, 50, DamageType_Abyss)进阶一点,可以用Async Overlap或自定义 C++ 的UAsyncAction实现更细粒度的多帧判定,不会阻塞主线程。
5.3 粒子不负责碰撞,为什么要提“物理资产作为 Hitbox”
热搜词里有“ue5 用物理资产作为 hitbox”,这个做法很实用。怪物骨骼网格体往往自带 Physics Asset,原本用途是布娃娃物理。但我们可以把物理资产的某些碰撞体设置成一个“体积判定盒”,用 Overlap 事件替代精确骨骼碰撞。
优势是:
- 不需要额外创建胶囊体或其他碰撞体,直接用骨骼自带数据;
- 可以区分四肢、头部、躯干等部位实现部位伤害;
- 物理资产在引擎里天然可视化,不用靠经验猜位置。
做法参考:
- 打开怪物骨骼网格体对应的 Physics Asset;
- 为需要判定的骨骼添加 Sphere / Capsule 碰撞体;
- 把碰撞预设改成
OverlapAll或自定义SkillHitbox; - 在怪物蓝图里开启组件查询,检测到被技能 Overlap 时调用 Damageable 接口。
注意:物理资产默认主要用于模拟,如果大量使用物理模拟会导致性能开销。作为 Hitbox 时,建议把物理资产的模拟关闭,只用它的碰撞形状做场景查询。
5.4 万剑命中反馈
剑气命中怪物时,需要给怪物一个受击表现,否则玩家会觉得“招式很帅但没打中”。
- 怪物蓝图接口里播放受击动画;
- 生成一个命中特效,比如剑光爆闪、血迹喷溅的 Niagara;
- 给一个极短的 hit stop(时间缩放 0.1 秒)增强打击感;
- 如果想做“剑插在尸体上”,需要把剑的 Static Mesh 从粒子系统里解绑,生成独立的可交互 Actor。这一步在 Niagara 里可以用Particle Spawn 事件向蓝图发送数据。
6. 性能优化:30 秒清场的帧率保卫战
UE5 大场景 + 大量粒子 + Lumen 是最吃性能的组合。项目如果打在低配 PC 上,很容易从“CG 级画质”变成“PPT 级帧率”。
6.1 粒子数量分级
推荐用Scalability技巧:根据画面质量设置不同粒子数上限。
- Epic:3000 剑;
- High:2000 剑;
- Medium:1000 剑;
- Low:500 剑。
Niagara 里可以通过Quality Level属性控制生成数量。也可以在蓝图里读取ScalabilityQuality,再动态修改 Niagara 的 Spawn Rate。
6.2 Lumen 和大量半透明粒子的取舍
Lumen 对不透明物体效果好,但大量半透明粒子(剑气拖尾)在 Lumen 下反射不准确,有时计算开销还不低。工程建议是:
- 剑气本体使用不透明或 Masked 材质,减少半透明排序压力;
- 拖尾使用简化版 Niagara,粒子数量少一些;
- 如果场景里地面是大面积金属或水面,注意 Lumen 反射造成的性能激增。
6.3 DLSS:打包以后到底有没有生效
关于“ue5 dlss好后打包出去”这个热搜问题,很多同学遇到的是:编辑器里 DLSS 正常,打包后画面缩放选项不见了或者黑屏。常见原因:
- 项目没开启对应的 RHI 支持,DX12 下 DLSS 必须使用 SM6;
- DLSS 插件在打包时没有被 Native 化;
- 显卡驱动版本过低,模型配置识别失败。
排查步骤建议:
- 编辑器里检查
r.ScreenPercentage是否被 DLSS 接管; - 打包后打开控制台,输入
r.DLSS.Enabled看值是否为 1; - 确认打包时是否包含 NVIDIA 的
ngx_dlss.dll文件; - 切换
Default RHI为 DX12 后重新打包。
6.4 渲染层报错:LowLevelFatalError / Assertion Failed
热搜里出现了两条典型的 UE5 渲染层崩溃:
LowLevelFatalError [File:...RenderCor]Assertion failed: Handle [File:...\RenderCore...]
这类崩溃通常出现在:
- 着色器编译缓存损坏:项目目录里的
Saved\ShaderBuildTime、派生数据缓存损坏; - GPU 驱动崩溃导致 RHI 资源释放异常;
- DX12 + 多 GPU 的兼容问题;
- 超频显卡在长时间满负载渲染时崩溃。
处理思路:
1. 删除 Intermediate、Saved 下的 Shader 缓存; 2. 启动时加 -dx12 参数强制走 DX12; 3. 用 -sm6 编译完整着色器; 4. 检查散热和驱动版本; 5. 如果崩溃稳定复现,用 DebugGPU 抓取 RenderDoc 帧; 6. 更新引擎版本或换 RHI 验证是否由引擎 Bug 导致。6.5 移动端双指触摸蓝图(扩展)
如果要把“万剑归宗”移植到移动端,双指触摸触发是常见交互。UE5 移动端触摸蓝图建议用Get Touch Index+ 手势判定:
- 双指按下时开启蓄力;
- 双指同时上滑触发万剑齐发;
- 用
Input Touch事件而不是单纯 Button,响应更跟手。
移动端的粒子数量可以降到 200~500,SSS 材质在移动端的实现建议关闭 Subsurface Profile,改用半透明渐变模拟。
7. 常见问题与排查清单
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| SSS 材质没有透光效果 | 没有赋 Subsurface Profile 或光照角度不对 | 检查材质 Profile,移动光源到逆光方向 |
| Niagara 剑阵不显示 | Mesh Renderer 没有指定网格体,或粒子数为 0 | 检查渲染器 Mesh 项、Spawn Rate、LOD 距离 |
| 剑气撞到怪物不掉血 | 伤害判定走粒子碰撞而不是蓝图 Overlap | 改用 Sphere Overlap 或物理资产 Hitbox |
| 蓝图接口调用后怪物无反应 | 怪物蓝图未实现接口,或接口实例类型不对 | 检查接口函数是否在怪物蓝图里覆写 |
| 打包后没有 DLSS 选项 | 插件未启用、DX12 未生效、dll 缺失 | 检查插件和打包产物文件 |
| 渲染层崩溃 LowLevelFatalErrror | Shader 缓存损坏、驱动问题 | 清理缓存、升级驱动、换 RHI 验证 |
| 粒子数量太多帧率骤降 | 没有做质量分级 | 使用 Niagara Quality Level 或蓝图动态降级 |
| 技能和动画不匹配 | 蓝图里没有挂接 Timeline 时间节点 | 给技能分阶段,每阶段对应动画蒙太奇的通知 |
| 物理资产做碰撞判定时错位 | 物理资产和骨骼比例不匹配 | 重新生成物理资产或手动缩放碰撞体 |
8. 最佳实践与工程建议
8.1 命名规范
用统一前缀方便检索。
- 蓝图接口:
BPI_开头 - 怪物基类:
BP_EnemyBase - 怪物子类:
BP_Enemy_AbyssSlime - 技能系统:
BP_SkillSystem或BTS_(Blueprint Targeting System) - Niagara 系统:
NS_Skill_SwordStorm - 材质:
M_AbyssSkin、MI_Sword_Glow(实例) - Subsurface Profile:
SP_AbyssSkin
建议把技能系统做成独立的 Actor 或者组件,挂在玩家身上,而不是把所有逻辑塞进玩家蓝图。这样后续换技能、加技能都不会影响移动和交互。
8.2 配置管理
技能参数不要写成硬编码,全部用 Data Asset 或曲线资产:
- 伤害值、范围、剑气数量放入
UDataAsset; - 多段伤害时间点用 Curve;
- 不同品质设置不同粒子数量,保存成
Scalability。
好处是策划和美术可以自己不碰蓝图就调整效果。
8.3 物理资产 Hitbox 的边界
物理资产主要服务于布娃娃和骨骼碰撞,如果技能判定很频繁,建议单独创建一套简化碰撞体,比如一套大胶囊组合,而不是直接依赖精细骨骼的每个碰撞体。
原因很简单:骨骼逐块 Overlap 虽然部位伤害准确,但性能消耗线性上升。清场技能里有几十个怪物,每帧做几十次精细 Overlap 是很大的开销。实际项目常用“粗测 + 精测”:
- 先做一个大半径 Sphere Overlap,拿到候选敌人;
- 再对候选敌人用物理资产做精细化骨骼部位检测;
- 只对真正被击中的敌人广播伤害接口。
8.4 异常处理与日志
技能逻辑很容易受空引用影响。比如 Overlap 到的对象不是蓝图类,直接调用接口会报错。建议在调用前加IsValid检查和接口判定:
If (Actor != nullptr && Actor.Implements(BPI_Damageable)) { IBPI_Damageable::Execute_ReceiveSkillHit(Actor, ...); }同时在关键节点打印 Log:
UE_LOG(LogTemp, Warning, TEXT("Skill hit target: %s, Damage: %d"), *ActorName, Damage);8.5 性能预算
给“万剑归宗”定一个大概预算,用于开发期控制:
| 项目 | 建议预算 |
|---|---|
| 粒子数 | 3000 内(PC Epic) |
| 物理资产重叠查询 | 每帧最多 50 个 Actor |
| 每波剑气事件 | 单技能最多 8~12 个粒子和时间事件 |
| 材质复杂度 | 单材质指令数建议 150 以内 |
| 后处理 | Bloom + AO + DOF 可选,不建议同时开过热眩光 |
8.6 诚实的版本建议
如果你是从 UE 5.1 往 5.3 迁移,Niagara 某些节点命名会变。比如旧的Spawn Burst Instantaneous被合并或者改名,需要打开面板重新搜索。不建议直接复制高版本的 Niagara 资产到低版本,二进制资产可能不兼容,最好在目标版本里重新搭店铺逻辑。
同理,关于 DLSS 插件在不同引擎版本的启用方式差异比较大,没有把握时,优先查阅当前版本自带的插件文档,避免按老教程设置后打包失败。
9. 写在最后:不只是做一个“炫技”
“万剑归宗・苍曜穹殛”这类项目,最值得学习的并不是把剑阵做得有多华丽,而是 UE5 里模块化协作的思维方式:
- 内容是 MCG 级的,开发流程是工程级的。
- 材质用 SSS 提升基础质感,Niagara 负责视觉规模,物理资产和蓝图接口负责战斗规则。
- 性能优化不放在最后,而是在搭建第一版技能时就把 Scalability 和碰撞查询预算考虑进去。
下一步可以继续深入的方向:
- 用 C++ 扩展 Niagara 自定义模块,把剑阵排列算法写到 GPU 端,提升粒子上限。
- 用 Gameplay Ability System(GAS)替代蓝图接口,实现更严格的技能释放规则、冷却、消耗和伤害归档。
- 做一个简单的数字孪生或大世界场景,把 Lumen、Nanite 和 Niagara 结合,体验 UE5 从渲染资产到玩法交互的完整链路。
- 如果想做短剧级 CG,可以研究 Movie Render Queue + Path Tracing 的离线渲染管线,和实时渲染互相补充。
最后给一个实在的建议:做技能表现时,先把伤害判定逻辑画成一张状态图。哪一帧开始产生判定、判定范围多大、持续多久、冷却多少次,一旦这个时间轴确定,Niagara 和蓝图的对接就只差连线了。
“万剑归宗”不是一梭子粒子,而是一套设计好的技能节奏。把节奏做顺了,哪怕粒子数量砍到 1000,玩家依然会觉得这一招“SSS 级”。