简洁的方式实现 UI 粒子特效

最近在使用 Unity URP 时,摸索出了一套简洁的制作 UI 粒子特效的方式。

先创建一个新的 Camera, 将 Render Type 设为 Overlay, Projection 设为 Orthographic, Size 对齐屏幕尺寸, Culling Mask 设为 UI.

overlay_camera

为了自适应屏幕大小,写个脚本修改 Camere 的 size: camera.orthographicSize = Screen.height * 0.5f. 还有粒子的 size 也需要修改:

1
2
3
4
5
6
7
float multiplier = Screen.height / canvasScaler.referenceResolution.y;
var particles = GetComponentsInChildren<ParticleSystem>();
foreach (var p in particles)
{
var main = p.main;
main.startSizeMultiplier *= multiplier;
}

然后给原来 Render Type 为 Base 的 Camera 的 Stack 里加上刚刚新建的 Camera.

stack_camera

然后把 Particle System 做的粒子特效挂到想要挂到的 UI 对象下面,调整 Start Size 到够大,把 Layer 设为 UI. 想要调整粒子和 UI 的前后关系的话,可以调整粒子 Renderer 的 Order in Layer.

使用 Unity 的细枝末节 从第九世代游戏机看未来
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×