UGUI_UI和特效结合使用问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wwlcsdn000/article/details/81319137

UGUI_UI和特效结合使用问题

一般我们会有UI、3D模型、粒子特效的穿插排序需求,这种情况下,我们需要单独特殊处理各种层级关系,特别是UGUI的不同的画布模式,不同的模式下坑点不同。

UGUI的画布模式介绍

https://www.cnblogs.com/msxh/p/6337338.html
##不同画布模式下的分析
###摄像机模式(世界空间模式)
通常我们正规需求做UI,都需要一个特定的UI摄像机和一个摄像机模式的画布,UI默认都是UI layer层。
UI本身有相同的Camera,相同的RenderQueue,是按UI节点树的顺序从上往下依次渲染。
世界空间模式做UI,我们也是采用自己的摄像机去对准这个画布,所以本质上感觉还是相同的。
这只是个人理解认为,所以世界空间模式就不做单独分析了。
摄像机模式下的是关键主要是如下:
调整摄像机的SortLayer进行排序
确保粒子的layer层级设置跟UI是一致的 一般默认是UI
然后去调节相应的SortLayer参数 通过代码或者 粒子系统的SortLayer参数都可以。
关于案例可以参考如下的博客:
http://www.itread01.com/articles/1488545915.html

还有一种网上别人提供的方式,用一个单独的摄像机去渲染,然后渲染给一个RenderTexture。
https://blog.csdn.net/bingheliefeng/article/details/52750185
这里有简单的提到,但是我没有进行测试。

###覆盖模式
这种模式想要添加粒子特效是几乎不太可能的事情,因为看官方的描述,覆盖模式UI永远置于最上层的,所以我们无论怎么调节粒子都无法实现特效位于UI之前这种效果,目前我查找资料是没有找到办法,如果有解决方案希望可以给我留言。

既然粒子特效不行,那我们只能是换用其他方式来进行。
上边说道UI是永远置于最上层的,所以我们只能在UI上想办法。
UI上想办法最简单的就是图片,我们用图片来表现效果,
比如添加Gif动画,序列帧动画(代码控制)。
Unity制作动画序列帧的办法参考如下:
https://blog.csdn.net/ldy597321444/article/details/78367297
代码控制序列帧动画参考如下:
https://blog.csdn.net/yongh701/article/details/78163878?locationNum=7&fps=1
我自己试验没问题,也可以简单的使用Image组件,不一定非要使用SpriteRender。
Gif动画播放插件推荐:
https://assetstore.unity.com/packages/tools/animation/animated-gif-player-80956
亲测支持安卓,ios看官网评论也可以支持

自己测试的案例现在比较乱,就先不上传了,后续如果我做了整理在考虑更新。

插件推荐

之前说过覆盖模式的特效无法解决问题。
现在官网找到了一个UI粒子插件,作者基于Unity粒子系统扩展了新的功能。
https://assetstore.unity.com/packages/tools/gui/ui-particles-72330
基于Unity Shuriken粒子系统的UI粒子,您不需要更改粒子。使用Shuriken粒子系统简单地将UIParticles脚本添加到GameObjects,在Canvas中设置它就完成了。

支持的功能:

UI粒子与所有类型的画布兼容:
•屏幕空间 - 叠加
•屏幕空间 - 相机
•世界空间

UI粒子支持UI内部的深度排序。

UI粒子支持使用着色器更改的RectMask2D和Mask组件。

UI粒子支持拉伸的广告牌和网格渲染模式。

UI粒子与移动设备兼容。在iOS和Android上测试过。

不支持的功能:
UI粒子目前不支持Shuriken Particle Render模块。
对于Unity版本5.4早期不支持: -
每个轴的不同粒子比例。
尚不支持网格。

在插件的Demo中可以明显看到UI粒子的支持情况,包括深度 遮罩等功能。在这里插入图片描述

没有更多推荐了,返回首页