UGUI播放UI特效以及解决特效与UI的层级问题
来源:互联网 发布:软件公寓如何申请 编辑:程序博客网 时间:2024/05/22 17:01
UGUI播放UI特效网上有不少人写了文章,比如http://www.xuanyusong.com/archives/3435
但实现的都不是很好,比如我的工程就只有一个Canvas,那么这篇文章的做法就不行了
而且当UI缩放时,特效也没有做相应的缩放的话,位置就会不对
参考3D引擎普遍的做法是RenderTarget渲染到Image上,然后就能解决上诉问题
网上有一篇文章讲了一些http://blog.sina.com.cn/s/blog_89d90b7c0102vhuk.html
但是我并不想像文章说的每个特效创建一个Camera
我的做法简单来说,用一个单独的EffectCamera照特效,遍历特效强制渲染,然后渲染到RenderTarget ,然后赋给RawImage
大体流程其实和上一篇文章一样,要解决的问题是如果只用一个摄像机,需要用到Camera.Render(),该函数是强制渲染当前摄像机视野内的物体
public static void OnPreCull() { if (SfxList_.Count == 0) { return; } foreach (var Entity in SfxList_) { if (!Entity.Value.IsLoad) { continue; } MiscUtil.ChangeLayer(Entity.Value.RawEffectObject, EffectLayer_); Camera_.targetTexture = Entity.Value.RenderTarget; Camera_.Render(); MiscUtil.ChangeLayer(Entity.Value.RawEffectObject, EffectHideLayer_); } }
原理就是摄像机只渲染Effect层级的特效,每次遍历渲染特效时先改成EffectLayer,渲染后改成另一个Layer继续渲染下一个
using UnityEngine;public class CameraExtends : MonoBehaviour{ void OnPreCull() { SfxManager.OnPreCull(); }}
这是函数入口,OnPreCull是Camera的回调函数,挂到主摄像机,在每次裁剪之前调用(其实应该用OnPreRender,但这个函数渲染会报错,提示不能再渲染流程动态添加渲染消息,Google了一番说是自Unity3D 4.3版本开始有的BUG,那么姑且就绕过吧)
一些参考链接
https://docs.unity3d.com/ScriptReference/Camera.html
https://docs.unity3d.com/ScriptReference/Camera.Render.html
https://docs.unity3d.com/ScriptReference/Camera.OnPreCull.html
https://docs.unity3d.com/ScriptReference/Camera.OnPreRender.html
0 0
- UGUI播放UI特效以及解决特效与UI的层级问题
- ui的粒子特效的层级问题
- UGUI研究院之不添加摄像机解决UI与UI特效叠层问题
- UI特效层级管理
- UGUI-UI添加特效
- Unity NGUI内特效与UI层级关系的设置
- UGUI 里特效的层级
- Unity特效与UI遮挡的问题
- Unity NGUI和UGUI与模型、特效的层级关系
- Unity NGUI和UGUI与模型、特效的层级关系
- unity UGUI与模型混合显示(ui显示特效)
- UGUI(九)UI粒子特效
- 安卓中炫酷的UI特效
- Android的UI特效
- UI 特效
- UI特效
- NGUI 特效和UI遮挡的问题
- UGUI如何在UI与UI直接穿插粒子特效和模型
- Android 购物车UI及逻辑实现
- 修改War包文件
- 六大排序算法之 PHP和C++实现
- centos6.5 redis sentinel主从模式配置
- 二叉树
- UGUI播放UI特效以及解决特效与UI的层级问题
- 并查集和prime和kruskal
- ASP .Net MVC使用Knockout.js
- Json数据处理:使用GSON处理数据的方法
- Codeforces Round #204 (Div. 2) B
- Java集合类之Collection接口
- Unity3D Asset文件导出3DMax 可编辑格式
- 在ssh中避免老掉线以及私钥公钥的问题
- 八皇后c++版本