Unity面板究极优化

news2024/10/6 8:26:44

         首先对于大项目来说UI首选一定的UGUI,目前没有啥可选的余地。多一点都是对性能的负担,UGUI底层基于多线程技术,可以有效分担压力,对于一些不是那么重的面板几乎无感。

        无论其他面板只是在此基础上修改的,但每多一层,计算机难免就得多一道计算,因此目前最优解一定是UGUI。

        这两天频繁的被问面板优化,该做的都已经做过了但还是不行,达不到要求该怎么办呢?

UGUI性能问题一般分为四种:

  1. Canvas  batch-build过长,通常是drawcall问题
  2. Canvas  Over-dirty 次数过多,频繁销毁创建
  3. 生成UI网格顶点时间过长
  4. GPU片元着色器利用率过高

        UGUI的drawcall是由c++完成的,因此对于同一个canvas下的图片我们要尽可能采用合批,无论它是静态合批还是动态合批,以降低drawcall,提高效率

合批的过程:

根据UI面板的深度进行排序

检查UI面板图片的遮盖关系

检查材质对于相同材质进行合批

        以上这些是在unity里c++部分完成的,因此对于轻量级的面板,打开一般无感,能够很流畅的打开

通常UGUI打图集是一招遮百丑的技术方案,很好用,效率也非常高

        为了避免面板卡钝出现问题,优化好UI,因此在搭建面板之前一定要竖立好规矩:

1、动静分离。建立两个Canvas面板将会动态绘制,可能触发重构的面板与静态面板分离

2、将所有可能打断合批的面板移到最下层,做好面板互斥,避免无用UI面板重叠出现

3、不使用Layout组件,最好自己用代码做好管理

4、Canvas的RenderMode尽量使用Overlay模式

5、不使用Text组件,使用TMP(TextMeshPro)组件代替

6、尽可能关闭面板上无用的组件系统,(比如关闭Raycast Target,尽量仅在最下一层面板开启)

7、对于嵌套的Canvas,OverrideSorting属性会打断射线,可以降低层级遍历

8、对于UI对象查找尽量不使用Find来进行查找,做好标签进行查找

9、美术图片尽量不要带有透明部分,图片制式要能被2整除

10、至少要简单了解UGUI特性和字体问题

11、字体不要太小,否则可能会导致频繁重建

12、使用Font.RequestCharacterInTexture进行字体预加载,降低启动时间

13、对于不可见UI不要使用UI的透明度进行开关显示,因为它实际上依然在绘制

14、非全屏对话模式合理的使用OnDemandRendering接口,合理降频

15、优化UI Shader剪裁,根据需要合理剔除多余部分

16、对于背包商城部分合理使用对象池和动态图集,合理缓存

17、分帧加载背包商城

18、合理设计好面板的打开方式,对重型界面提前缓存

19、使用RectMask2D组件剪裁,剔除不必要部分渲染,使用规则的滑动列表

20、终极大招,找美术削图片质量,找策划削功能(没治只能这么干了)

21、适当重新设计面板的打开方式,减轻压力和负担

22、也可以根据UGUI源码自己改一套自己的UI管理模式框架

以上即是规矩,也是UGUI优化的要点

如果这些都做了,那可能还得排除考虑下其他部分设计是否合理,是不是因此影响了面板,出现了卡顿

非战斗,影响不到用户体验可以不做优化,一般帧数不少于20-30即可(用户感觉不到就行了)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/842648.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习---监督学习和非监督学习

根据训练期间接受的监督数量和监督类型,可以将机器学习分为以下四种类型:监督学习、非监督学习、半监督学习和强化学习。 监督学习 在监督学习中,提供给算法的包含所需解决方案的训练数据,成为标签或标记。 简单地说,…

40.利用欧拉法求解微分方程组(matlab程序)

1.简述 求解微分方程的时候,如果不能将求出结果的表达式,则可以对利用数值积分对微分方程求解,获取数值解。欧拉方法是最简单的一种数值解法。前面介绍过MATLAB实例讲解欧拉法求解微分方程,今天实例讲解欧拉法求解一阶微分方程组。…

简单认识ELK日志分析系统

一. ELK日志分析系统概述 1.ELK 简介 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 好处: (1)提高安全…

OnlyOffice社区版破解最大连接限制部署

onlyoffice社区版部署并且破解最大连接数 docker镜像 docker pull onlyoffice/documentserver:5.3.1.265.4或更高的版本已经解决了此方法的Bug 运行镜像 docker run -d --name onlyoffice --restartalways -p 暴露端口号:80 onlyoffice/documentserver:5.3.1.26进入容器内部…

windows系统安装ElasticSearch7.9.3笔记

windows系统安装ElasticSearch7.9.3笔记 从es中文社区 或elastic官网下载安装包 ES中文社区-浏览器地址https://elasticsearch.cn/download/ 下载7.9.3版本的相关安装包 下载的安装包清单如下 开始配置使用带ik分词器和拼音分词器的ES7.9.3 分别解压这3个zip 拷贝ik分词器…

48.C++ vector容器(模板类)

今天学习了C中的vector容器,它提供动态数组功能,方便管理和存储数据。支持动态调整大小,简化了数组操作,使代码更灵活、高效。实在是太牛了,后悔没有早点学习容器。 目录 一、vector简介 二、头文件和命名空间 三…

该你出手了!华为云PaaS服务 8月线上开发者活动指南——技术提升、合作交流、创新无限!

天高云阔、风朗气清 亲爱的开发者们,8月已经来临 你们准备好迎接一个充满激情和挑战的月份了吗? 如果你对编程充满热情,对技术前沿有所追求 那么华为云PaaS为各位开发者准备的这些8月活动,你一定不能错过。 为了让开发者们更好…

集睿致远/CS5269设计Typec转HDMI带PD100w快充方案

集睿致远ASL推出的CS5269AN是一款高性能Typec/DP1.4转HDMI 4k_60Hz带PD100w快充转换器方案芯片 DP接口包括4条主通道、辅助通道和HPD信号。支持5.4Gbps(HBR2)的数据速率。DP接收机兼容HDCP1.4和HDCP2.3内容保护方案具有嵌入式密钥,用于数字音视频内容的…

【源码分析】Nacos如何使用AP协议完成服务端之间的数据同步?

AP节点的同步使用的是异步任务消息队列的方式来实现的。 取出任务之后将会放入到一个List集合中。 然后会发现任务的执行是由条件的。 首先是当前集群的节点数量等于1000,那么此时会直接开始同步,当然这个条件在小项目中不会成立,所以还有…

BIO,NIO,AIO总结

文章目录 1. BIO (Blocking I/O)1.1 传统 BIO1.2 伪异步 IO1.3 代码示例 1.4 总结2. NIO (New I/O)2.1 NIO 简介2.2 NIO的特性/NIO与IO区别1)Non-blocking IO(非阻塞IO)2)Buffer(缓冲区)3)Channel (通道)4)Selector (选择器) 2.3 NIO 读数据和写数据方式…

python-opencv对极几何 StereoRectify

OpenCV如何正确使用stereoRectify函数 函数介绍 用于双目相机的立体校正环节中,这里只谈谈这个函数怎么使用,参数具体指哪些函数参数 随便去网上一搜或者看官方手册就能得到参数信息,但是!!相对关系非常容易出错&…

MySQL体系结构

连接层: 最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。服务层: 第二层架构主要完成大多数的核心服务功能,如…

【从零学习python 】02. 开发工具介绍

文章目录 编写Python代码一、常见的代码编辑工具二、运行Python程序三、Pycharm的下载和安装PyCharm的主要功能区域进阶案例 编写Python代码 根据我们之前介绍的知识,我们知道,所谓代码其实就是将一段普通文本按照一定的规范编写,然后交给电…

微信提示操作太频繁怎么办?

微信使用过程中,遇到“操作太频繁”的提示该怎么办? 而提示频繁最常见的两种情况:加好友频繁和发消息频繁。 微信为什么提示频繁?频繁是因为微信故意这样设置的,压根就不想你群发!!&#xff0…

《Zookeeper》从零开始学Zookeeper源码(三)之服务器的启动过程

目录 QuorumPeerMain QuorumPeerMain 在搭建本地的源码环境中,启动zookeeper服务端的入口为QuorumPeerMain,先看下它的类结构: 它本身只有一个属性quorumPeer,它代表了zookeeper集群中的一台机器,它会不断检测当前服…

营销文案流水线化生产——agent llm

背景: 做过工厂生产的朋友应该对生产流程:BOM、SOP这两个词不陌生,然而这两个词更厉害的地方在于标准化流程化作业。其实经过这么多轮迭代的内容生成,特别是和商业营销相关的数字化内容生成和其不是在追求标准化、流程化、定制化…

某大型医院门户网站性能分析案例

故障现象 门户网站近期出现少量的访问体验慢现象,主要是由于服务器响应时间慢。出现慢页面的页面簇为:http://www.xxx.ac.cn/。 分析过程 下面将分析异常原因:页面的URL信息?页面慢的原因? 性能问题分析,定位到慢访…

知识付费系统开发:构建高效智能的付费内容平台

随着数字化时代的来临,知识付费正迅速崭露头角,为知识创作者和求知者带来了全新的商机。在这个背景下,开发一款高效智能的知识付费系统成为了一项重要的任务。本文将深入探讨如何基于Python编程语言和相关技术构建一个智能的知识付费内容平台…

kconfig语法

前言 Kconfig文件:存放生成基于图形化界面内容 学习原因:Kconfig是各种配置界面的源文件,内核的配置工具读取各个Kconfig文件,生成配置界面供开发人员配置内核,最后生成配置文件.config 语法 1.概念:主…

【51单片机】晨启科技,7针OLED显示驱动程序,STC89C52RC

文章目录 原理图oled.coled.hmain.c 原理图 sbit OLED_SCLP4^3;//SCL-D0 sbit OLED_SDAP4^1;//SDA-D1 sbit OLED_RES P3^6;//RES sbit OLED_DC P3^7;//DC sbit OLED_CSP2^7; //CS oled.c #include "OLED.h"//******************************说明*******************…