Unity3d:UGUI,UI与特效粒子层级,2018.2以上版本BakeMesh,粒子在两个Image之间且在ScrollView
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相关推荐
- Unity 之 UGUI 图片 和 粒子特效显示层级关系调整
Unity 之 UGUI 图片 和 粒子特效显示层级关系调整 通常我们使用UGUI时都是通过调整UI的先后顺序或者父物体的层级关系,可是当我使用到粒子特效和Image一起的时候发现光修改层级关系是达不 ...
- 【Unity3D ugui】UI特效的位置自适应及调整层次关系的一种解决方案
前言 在UI上显示3D的特效,要考虑两个问题: 1.特效的位置自适应与UGUI自适应一致,否则在16:9下把特效调好位置后,切成16:10后,位置对应不上 2.特效显示层次最好能夹在UI中间 UGUI ...
- Unity3d UGUI 实现底部UI自适应的功能(含工程)
Unity3d UGUI 实现底部UI自适应的功能(含工程) 前言 UI的自适应常常在项目中使用到,特别手游中,不同比例屏幕的手机,如果能考一套UI自适应显示,能省去不少的开发工作量.这里只是浅浅的讨 ...
- Unity3d UGUI基础控件使用(一)
转载自:Unity3d UGUI基础控件使用(一) 一:UGUI介绍 UGUI是Unity4.6之后,经过多重测试,推出全新的UI系统,更灵活,快捷,易用的可视化游戏UI开发工具. 由于之前传统的UI ...
- unity3D之UI
unity3D之UI 一.canvas 1.canvas介绍 2.创建canvas 二.RawImage和Image 1.image介绍 2.RawImage介绍 3.创建 三.text文本 1.te ...
- Unity3d UGUI 通用Confirm确认对话框实现(Inventory Pro学习总结)
背景 曾几何时,在Winform中,使用MessageBox对话框是如此happy,后来还有人封装了可以选择各种图标和带隐藏详情的MessageBox,现在Unity3d UGui就没有了这样的好事情 ...
- Unity3d Ugui图片上制作点光 、棱形光效果shader,并具有裁切
Unity3d Ugui图片上制作点光 .棱形光效果 实现的效果可以参考如下图所示 通过shader来实现上述的效果,为了大家的适应性,推荐在unity官方的默认ui shader上更改,我用的是20 ...
- java粒子特效_程序员20分钟搞定粒子效果, 仅仅200行代码
原标题:程序员20分钟搞定粒子效果, 仅仅200行代码 这粒子的打造,确实没有布局代码,稍后大家在源码上可以看到,css代码都只有几行,绝大部分代码都是java代码,而且是原生java书写的,现在很多 ...
- html5网站粒子时钟,利用HTML5实现SVG多边形粒子时钟动画特效
特效描述:利用HTML5实现 SVG 多边形 粒子时钟 动画特效.利用HTML5实现SVG多边形粒子时钟动画特效 代码结构 1. 引入JS 2. HTML代码 svg { position: ab ...
最新文章
- python +Django 搭建web开发环境初步,显示当前时间
- Linux下I/O多路转接之select --fd_set
- TCP/IP网络断和127.0.0.1回网IP概念
- rh9.0虚拟机dmesg启动过程分析(1)
- 使用vue开发一个双向展开的卷轴组件
- 音视频开发(14)---智能视频解决方案
- HTML5 — 知识总结篇《VI》【路径的写法】
- Battery Health 3 for Mac(电池健康管理工具)
- SAP 批导程序导入Excel后,Excel自动打开
- 计算机专业职业生涯规划书,计算机专业职业生涯规划书2000字.doc
- 地图标注不完整图片_“地图帝”不规范使用图件之Anton Balazh作品介绍
- 国内下载Android源码教程
- error: expected unqualified-id before 'xxx'
- matlab中单刀双掷开关,单刀双掷开关与双刀双掷开关的区别
- 乔家大院的5A牌子被摘了,但且别急着叫好
- 苹果开发者账号网页版续费失败支付报错解决办法
- 微信广告+视频号,营销能力全面盘点,视频号是否能做新突破?
- 公钥加密与PKI实验
- 100首婚礼背景音乐
- vue+element 实现试卷答题功能,单选题 ,多选题,判断题,简答题(2.0版本,2021.3.25更新)
热门文章
- 腾讯网上共享excel使用总结
- Segmentation fault (core dumped) 和double free or corruption (out)Aborted (core dumped)
- “跑在互联网上的售货机”友宝签约法大大
- css拉伸动画,CSS3 matrix双板划水、拉伸、打板动画实例animation
- python代码完成Fisher判别
- C语言实现简易五子棋
- 目标规划之问题数学化(建模)
- 迪杰斯特拉算法和弗洛伊德算法
- 奇妙的数学:蓝眼睛岛和强弱共识
- 中医针灸学综合练习题库【9】