UGUI 3D粒子特效裁剪,层级,适配
Unity里默认的粒子特效是3D渲染方式的,而UGUI又是特殊的渲染方式。
如果想在UI里直接放入粒子特效,会导致:
- 分层问题,粒子特效的层级排序由Z轴以及sort layer决定,而UI的层级排序由节点顺序决定。这就会导致,粒子特效要么在UI之上,要么在UI之下,没法实现穿插在中间的效果
- 裁剪问题,如果要在滚动框里放一个粒子,很容易就穿帮。因为UI的UI MASK对3D粒子不生效。
- 自适应缩放,普通粒子并不会跟UI一样,随着分辨率的变化而自动缩放适应
解决方法:
参考:UGUI粒子特效裁剪,层级,适配_Black-Coder的博客-CSDN博客
项目:nizhenchao/UGUIEffectDemo: 基于UGUI的粒子特效解决方案。 (github.com)
1、cs代码。
建一个cs脚本【UIParticleSystem.cs】,继承自 MaskableGraphic,这样就可以把这个粒子系统系统发射出来的粒子当成UI元素了。具体代码可以到项目里查看。
为了能够让粒子系统发射出来的粒子能够在UI层级上显示(UGUI的渲染队列是 “Transparent” ,RenderQueue = 3000,是透明度混合队列),所以单独提供了一个 shader。并且在Shader里开启了模板测试,这样的粒子才能被裁剪
使用方法:
1.在特效上挂载 UIParticleSystem.cs 脚本,此时 ParticleSystem 会自动被挂载上。(会隐藏掉粒子的Render属性),如果一个粒子底下有多个粒子,只需要在最根节点挂 载就行了,会自动递归下去
2.创建材质球,使用 "17zuoye/UI Particle Addtive" shader,并给材质球附上对应贴图后拖到 UIParticleSystem.cs 的material的字段上。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)