ui上面展示粒子一般来说有两种方案
1.通过rendertexture渲染,可以完美处理层级问题,不过性能不好,多个摄像机
2.直接放到ui界面调整特效sort in layer,不过如果ui特效穿插多,层级不好管理,且多canvas造成合批问题
现在来第三种方法粒子BakeMesh(要2018.2以上版本)
来自Github:https://github.com/mob-sakai/ParticleEffectForUGUI
优点:可像UGUI一样通过上下调整层级排序,接受Mask处理

各方案比较

粒子BakeMesh

原理:直接让粒子的网格和贴图在ui基础组件里面渲染
使用接口
ParticleSystemRenderer.BakeMesh和ParticleSystemRenderer.BakeTrailsMesh这里是生成网格信息
CanvasRenderer.SetMesh
CanvasRenderer.SetTexture
把mesh和texture扔给canvasRenderer渲染

代码解析

UIParticle

UIParticle 是粒子的父物体

[RequireComponent(typeof(RectTransform))][RequireComponent(typeof(CanvasRenderer))]
public class UIParticle : MaskableGraphic
{protected override void OnEnable(){UIParticleUpdater.Register(this);

CanvasRenderer渲染包含在Canvas中的UI对象,是一个Graphic必须的

UIParticleUpdater

Canvas.willRenderCanvases监听

internal static class UIParticleUpdater{[RuntimeInitializeOnLoadMethod]private static void InitializeOnLoad(){Canvas.willRenderCanvases -= Refresh;Canvas.willRenderCanvases += Refresh;}

Q: Canvas.willRenderCanvases监听
A:官方解释:在即将开始 Canvas 渲染前调用的事件。
这让您能够延时处理/更新基于画布的元素,直到即将开始渲染它们之时。在这里做生成粒子的Mesh,再通过调用particle.canvasRenderer.SetMesh,渲染粒子的mesh
Refresh

private static void Refresh(UIParticle particle){Profiler.BeginSample("[UIParticle] Bake mesh");BakeMesh(particle);Profiler.EndSample();Profiler.BeginSample("[UIParticle] Set mesh to CanvasRenderer");particle.canvasRenderer.SetMesh(particle.bakedMesh);Profiler.EndSample();}

Unity3d:UGUI,UI与特效粒子层级,2018.2以上版本BakeMesh,粒子在两个Image之间且在ScrollView相关推荐

  1. Unity 之 UGUI 图片 和 粒子特效显示层级关系调整

    Unity 之 UGUI 图片 和 粒子特效显示层级关系调整 通常我们使用UGUI时都是通过调整UI的先后顺序或者父物体的层级关系,可是当我使用到粒子特效和Image一起的时候发现光修改层级关系是达不 ...

  2. 【Unity3D ugui】UI特效的位置自适应及调整层次关系的一种解决方案

    前言 在UI上显示3D的特效,要考虑两个问题: 1.特效的位置自适应与UGUI自适应一致,否则在16:9下把特效调好位置后,切成16:10后,位置对应不上 2.特效显示层次最好能夹在UI中间 UGUI ...

  3. Unity3d UGUI 实现底部UI自适应的功能(含工程)

    Unity3d UGUI 实现底部UI自适应的功能(含工程) 前言 UI的自适应常常在项目中使用到,特别手游中,不同比例屏幕的手机,如果能考一套UI自适应显示,能省去不少的开发工作量.这里只是浅浅的讨 ...

  4. Unity3d UGUI基础控件使用(一)

    转载自:Unity3d UGUI基础控件使用(一) 一:UGUI介绍 UGUI是Unity4.6之后,经过多重测试,推出全新的UI系统,更灵活,快捷,易用的可视化游戏UI开发工具. 由于之前传统的UI ...

  5. unity3D之UI

    unity3D之UI 一.canvas 1.canvas介绍 2.创建canvas 二.RawImage和Image 1.image介绍 2.RawImage介绍 3.创建 三.text文本 1.te ...

  6. Unity3d UGUI 通用Confirm确认对话框实现(Inventory Pro学习总结)

    背景 曾几何时,在Winform中,使用MessageBox对话框是如此happy,后来还有人封装了可以选择各种图标和带隐藏详情的MessageBox,现在Unity3d UGui就没有了这样的好事情 ...

  7. Unity3d Ugui图片上制作点光 、棱形光效果shader,并具有裁切

    Unity3d Ugui图片上制作点光 .棱形光效果 实现的效果可以参考如下图所示 通过shader来实现上述的效果,为了大家的适应性,推荐在unity官方的默认ui shader上更改,我用的是20 ...

  8. java粒子特效_程序员20分钟搞定粒子效果, 仅仅200行代码

    原标题:程序员20分钟搞定粒子效果, 仅仅200行代码 这粒子的打造,确实没有布局代码,稍后大家在源码上可以看到,css代码都只有几行,绝大部分代码都是java代码,而且是原生java书写的,现在很多 ...

  9. html5网站粒子时钟,利用HTML5实现SVG多边形粒子时钟动画特效

    特效描述:利用HTML5实现 SVG 多边形 粒子时钟 动画特效.利用HTML5实现SVG多边形粒子时钟动画特效 代码结构 1. 引入JS 2. HTML代码  svg { position: ab ...

最新文章

  1. python +Django 搭建web开发环境初步,显示当前时间
  2. Linux下I/O多路转接之select --fd_set
  3. TCP/IP网络断和127.0.0.1回网IP概念
  4. rh9.0虚拟机dmesg启动过程分析(1)
  5. 使用vue开发一个双向展开的卷轴组件
  6. 音视频开发(14)---智能视频解决方案
  7. HTML5 — 知识总结篇《VI》【路径的写法】
  8. Battery Health 3 for Mac(电池健康管理工具)
  9. SAP 批导程序导入Excel后,Excel自动打开
  10. 计算机专业职业生涯规划书,计算机专业职业生涯规划书2000字.doc
  11. 地图标注不完整图片_“地图帝”不规范使用图件之Anton Balazh作品介绍
  12. 国内下载Android源码教程
  13. error: expected unqualified-id before 'xxx'
  14. matlab中单刀双掷开关,单刀双掷开关与双刀双掷开关的区别
  15. 乔家大院的5A牌子被摘了,但且别急着叫好
  16. 苹果开发者账号网页版续费失败支付报错解决办法
  17. 微信广告+视频号,营销能力全面盘点,视频号是否能做新突破?
  18. 公钥加密与PKI实验
  19. 100首婚礼背景音乐
  20. vue+element 实现试卷答题功能,单选题 ,多选题,判断题,简答题(2.0版本,2021.3.25更新)

热门文章

  1. 腾讯网上共享excel使用总结
  2. Segmentation fault (core dumped) 和double free or corruption (out)Aborted (core dumped)
  3. “跑在互联网上的售货机”友宝签约法大大
  4. css拉伸动画,CSS3 matrix双板划水、拉伸、打板动画实例animation
  5. python代码完成Fisher判别
  6. C语言实现简易五子棋
  7. 目标规划之问题数学化(建模)
  8. 迪杰斯特拉算法和弗洛伊德算法
  9. 奇妙的数学:蓝眼睛岛和强弱共识
  10. 中医针灸学综合练习题库【9】