前言

最近在工作中使用粒子特效是发现了两个问题

1. 美术提供的粒子特效没有根据屏幕分辨率自适应调整大小
2. 粒子特效的层级比较奇怪

正文

粒子特效自适应

在Unity编辑器开发中,使用的是 1080*1920 的分辨率,粒子特效大小看起来完美契合。

在Unity编辑器中

在打包运行在手机上时,因为手机的分辨率为 1440*2960,粒子特效就明显大于了UI界面。

在手机上

解决办法:

将粒子特效的 Scaling Mode [缩放模式] ,改为 Hierarchy [跟随父节点缩放]。

注意,改变了缩放模式之后,运行时会发现粒子变得特别小,这是因为Unity重置了该粒子特效的大小,只需要重新调整大小即可。

因为我是在FGUI的基础上穿插使用粒子特效,因为 FGUI 与 Unity 的比例不一致,比例为1:100,所以粒子特效需要将缩放比放大100倍。

Scaling ModeLocal 时不会有 FGUI 的比例问题,但是会有分辨率不适配问题,两害取其轻,所以选用 Hierarchy 模式。

1
effect.transform.localScale = Vector3.one * 100;

粒子特效层级

描述:当你把粒子特效挂到UI上之后,你发现要么粒子全被遮住了或者完全看不到特效。

解决方法:根据需求,修改粒子特效层级。 同样在Particle System 面板里,往下拉找到Renderer组件,若未勾选则将其勾选打开。里面会有两个相关层级的选项:Sorting Layer (排序层级)和 Order in Layer (在层级中的位序)

只要将这两个层级改成与你的挂在UI一个层级,就会完全看到这个特效。如果你需要特效被遮挡,则需要将该层级改成低于UI的层级。

这里有一个坑:当粒子特效和UI处于同一层级的时候,粒子特效不会被UI遮盖,无视节点顺序。

当我们UI和粒子特效都处在同一层级时,此时我们能看到粒子特效没问题。但是假如此时有提示弹窗弹出,需要遮住整个界面的时候。你就会发现UI是遮住了,但是粒子特效却跃然于UI之上。解决这个问题只能是弹窗的层级必须比粒子特效高一个层级,否则无论如何粒子特效都能无视节点顺序,显示在同UI层级的UI之上


to be continued…