UGUI的开关方案一种是使用SetActive进行的

但是这种方案其实有一个弊端,我们来测试下

每帧进行1000次的SetActive 的true和false

这是我们的UI,上面挂了一些 按钮 图片  输入  等元素

帧率只有2.4,我们看下Profiler

可以看到 GameObject.Activate 和 GameObject.Deactivate 消耗很高,这就是因为大量调用了SetActive

点开查看

可发现其主要原因是SetActive会触发子物体的OnEnable和OnDisable方法,而且这2个方法是有GC的

使得整体带来了GC的消耗

SetActive---------------->OnEnable  OnDisable--------------->GC开销

接下来,我们看下CanvasGroup的表现

帧率可维持在60多,GC瞬间没有了,对比强烈

稳定!

SetActive是因为出发unity的MonoBehaviour的生命周期,所以造成GC的消耗

不过注意如果使用了 CanvasGroup 的Alpha来控制界面的显隐,挂载的Monobehaviour脚本是一直执行的,如果你有Update方法的话,这个地方需要自行控制下,SetActive则不需要担心这点

UGUI优化方案之 SetActive 和 CanvasGroup的更多相关文章

  1. 关于Unity中的UGUI优化,你可能遇到这些问题

    https://blog.uwa4d.com/archives/QA_UGUI-1.html 关于Unity中的UGUI优化,你可能遇到这些问题 作者:admin / 时间:2016年11月08日 / ...

  2. 如何快速优化手游性能问题?从UGUI优化说起

    WeTest 导读   本文作者从自身多年的Unity项目UI开发及优化的经验出发,从UGUI,CPU,GPU以及unity特有资源等几个维度,介绍了unity手游性能优化的一些方法.   在之前的文 ...

  3. Tomcat 配置详解/优化方案

     转自:http://blog.csdn.net/cicada688/article/details/14451541 Service.xml Server.xml配置文件用于对整个容器进行相关的配置 ...

  4. 一个网站完整详细的SEO优化方案

    根据自己的个人经验完成了这篇文章,希望对SEOer有点帮助,高手直接跳过,请勿喷水... 一个完整的SEO优化方案主要由四个小组组成: 一.前端/页编人员 二.内容编辑人员 三.推广人员 四.数据分析 ...

  5. mysql 性能优化方案

    网 上有不少MySQL 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...

  6. iOS界面跳转的一些优化方案

    原文地址: http://blog.startry.com/2016/02/14/Think-Of-UIViewController-Switch/ iOS界面跳转的一些优化方案 App应用程序开发, ...

  7. tomcat配置详解/优化方案

    Service.xml Server.xml配置文件用于对整个容器进行相关的配置. <Server>元素:是整个配置文件的根元素.表示整个Catalina容器. 属性:className: ...

  8. mysql 性能优化方案1

    网 上有不少mysql 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...

  9. (转)Web性能优化方案

    第一章 打开网站慢现状分析 在公司访问部署在IDC机房的VIP网站时会感觉很慢.是什么原因造成的?为了缩短页面的响应时间,改进我们的用户体验,我们需要知道用户的时间花在等待什么东西上. 可以跟踪一下我 ...

  10. mysql 性能优化方案 (转)

    网 上有不少mysql 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...

随机推荐

  1. centos7部署keepalived

    yum install keepalived -y 修改/etc/keepalived.conf配置文件,达到高可用状态 vim /etc/keepalived/keepalived.conf ! C ...

  2. SQL 强化练习 (六)

    本以为学会了Python 就已经天下无敌, 果然, 我还是太傻太天真了. 业务中几乎就没有用 Python 来直接连接数据库进行操作, 当然我是说数据这块哈. 哎, 难受, 还是用的 sql 这种方式 ...

  3. OpenIddict使用教程

    OpenIddict是一个ASP.NET Core身份验证库,可帮助您添加OpenID Connect和OAuth 2.0支持到ASP.NET Core应用程序中.下面是OpenIddict使用教程的 ...

  4. Seata源码—1.Seata分布式事务的模式简介

    大纲 1.Seata分布式事务框架简介 2.Seata AT模式实现分布式事务的机制 3.Seata AT模式下的写隔离机制 4.Seata AT模式下的读隔离机制 5.官网示例说明Seata AT模 ...

  5. JVM垃圾回收为什么要分代

      分代的垃圾回收策略,是基于不同对象的生命周期不一样: 绝大多数对象都是朝生夕灭; 熬过越多次垃圾收集过程的对象就越难以消亡; 跨代引用相对于同代引用来说仅占极少数.   因此,不同生命周期的对象可 ...

  6. 使用aqt安装Qt历史版本

    首先是安装aqt: Windows 端 pip install -U pip pip install aqtinstall Mac端(可以用pip,也可以用brew) brew install aqt ...

  7. C#代码事件

    C#代码事件 从今天开始,WPF 的学习将上升到一个新的高度.之前主要都是围绕着界面上的内容,今天了解 C# 代码,让界面真正意义上能够有功能. 本文同时为b站WPF课程的笔记,相关示例代码 上节课自 ...

  8. 洛谷 P5066 [Ynoi2014] 人人本着正义之名debug-log

    序言 此日志分为四部分. 00:00是开始打代码的时间. 最开始打完代码(没有debug)大约用了两小时. part1-20210323 02:30 生成新节点时,没有给随机权值. 02:41 upd ...

  9. 洛谷 P4820 [国家集训队]书堆

    题目描述 让N本密度均匀的相同的书摆在桌上.最下面的摆在桌子边缘,其他的书依次堆叠在一本书上.每本书都只能水平放置,宽必须垂直于桌子边缘.如(洛谷的)图: 求书本最右能到多远(这个距离是指最右边的书的 ...

  10. Vue 学习笔记 [Part 6]

    作者:故事我忘了¢个人微信公众号:程序猿的月光宝盒 目录 〇. 修改配置:webpack.base.conf.js起别名 一. Vue CLI 1.1. Vue CLI3 cli3与2的区别 如何通过 ...