1、NGUI图集的使用。

图集,直接关系到了drawcall的数量。最好就是自始至终都只使用同一个图集中的元素,在界面制作上drawcall的消耗就只会受到Panel的划分以及字体与图集的混合使用这两部分的影响。

在制作图集时,可以分为两个制作方向。一是以NGUI自带的某一图集为基础,将自己需要使用的元素添加到该图集中。这样做的好处是可以在界面制作时使用NGUI提供的一些元素。

再一个方向就是制作一个全新的图集。这适合于对界面进行整体设计的情况,全部的界面元素都进行重新设计,然后制作成图集来使用。

另外,在使用NGUI自带的图集时,要注意在该图集的副本上进行新元素的添加、删除操作,避免对NGUI自身造成不必要的影响。

2、界面元素深度的设置与drawcall的控制。

在使用NGUI制作界面时,如果我们自始至终都使用唯一的图集,界面上的文字使用动态字体制作,

那么drawcall的消耗数量就只与Panel的划分以及同一个Panel下图集元素与字体元素的深度设置排列有关了。

我们知道,在NGUI中,它消耗的drawcall是以每个Panel为独立计算单位进行计算的。所以我们只要把一个Panel下的drawcall计算方式搞明白,然后再对Panel的划分加以控制,就能都达到有效控制drawcall的目的了。

在同一个Panel之下,如果所有的界面元素都使用同一个图集来制作,而且没有动态字体的“干扰”,那么该Panel消耗的drawcall数量就是1。这可以通过鼠标选中UIPanel的游戏对象来查看drawcall的使用情况

还是在同一个Panel之下,如果在图集使用过程中,还配合使用了动态字体,或是使用了不同的图集,那么该Panel下drawcall的计算就和其下元素的深度设置密切相关了。

一句话总结就是:为同一图集的元素设置一段独立的深度值区间,不同的图集元素或动态字体使用不同的深度值区间,尽量不要穿插。举例说明:

在同一个Panel之下,假设

深度值区间(-200, -100),图集1元素使用;

深度值区间(-100, 0),图集2元素使用;

深度值区间(0, 100),图集3元素使用;

深度值区间(100, 200),图集4元素使用;

按照上述情况计算,该Panel的drawcall值为4。但是,如果我们在使用时,不同的图集或动态字体的深度值出现了穿插,那么drawcall会出现猛增的情况,因为这里的drawcall计算方式是在使用的整个深度区间上,每遇到一个不同的图集,drawcall就会加1,不论该图集之前是否使用过,与此没有关系,都会加1。这就要求我们,在不影响功能实现的前提之下,对界面元素的深度值进行合理的排布设置。

3、动态字体的使用。

就是把字体也融入到图集之中,就像NGUI使用的方式那样。那么drawcall的消耗数量就又能降低不少了,相当于从使用两个图集变成只使用一个图集。

NGUI减少Drawcall相关推荐

  1. Unity优化之减少Drawcall

    简单来说,Drawcall就是屏幕渲染一次所需要的开销,为了较少消耗,提高性能. 什么是DrawCall以及如何对DrawCall进行优化操作. 一.什么是DrawCall? 在unity中,每次CP ...

  2. NGUI 减少Draw Call

    1.NGUI图集的使用. 图集,直接关系到了drawcall的数量.最好就是自始至终都只使用同一个图集中的元素,在界面制作上drawcall的消耗就只会受到Panel的划分以及字体与图集的混合使用这两 ...

  3. 【cocos creator】滑动列表复用,减少drawcall(TS)

    示例项目:https://download.csdn.net/download/K86338236/86860248 效果:999条数据,drawcall稳定在15 使用:ScrollViewCtrl ...

  4. Cocos Creator 性能调优:如何减少 2D/3D DrawCall?

    Cocos 中文社区第4期有奖征稿活动火热进行中,iWatch SE.坚果投影仪等丰厚奖品等你来拿,点击文末[阅读原文]进入社区专贴,把你的聪明才智向我们砸来吧! 点击查看活动详情 本文即为此次社区征 ...

  5. Unity界面插件NGUI基础教程

    一:创建你的界面 1.创建一个新场景. 2.选择并删除场景里的MainCamera. 3.在NGUI菜单下选择Create a New UI,会打开UI创建向导. 4.在创建向导中你能更改UI的基本参 ...

  6. NGUI渲染机制——从顶点和UV说起

    相信来到这里的你和我一样好奇NGUI是如何将我们的原始输入加工成为最终呈现出来的样子的,一言以蔽之,这个过程就是生成顶点.UV.颜色等数据并将它们传入Mesh中使用MeshRenderer进行渲染,但 ...

  7. RPG 游戏 unity ngui 实现2D名字牌血条等功能

    名字牌包括2D,3D名字牌两种,区别在于2D是基于屏幕坐标的名字牌,将名字牌的gameobject结点挂在UI相机下,不会受3D场景中物件的影响,3D名字牌可以视为游戏场景内的一部分物件,名字牌跟随角 ...

  8. Unity DrawCall详解

    在实际项目开发中,提起unity优化,肯定是有DrawCall的相关内容的,下面就讲解一下什么是DrawCall以及如何对DrawCall进行优化操作. 一.什么是DrawCall? 在unity中, ...

  9. UGUI的DrawCall和Rebuild

    1.DrawCall的概念 DrawCall是CPU调用图像编程接口,命令GPU进行渲染的操作.造成DrawCall过高的性能瓶颈其实是CPU而不是GPU.UGUI的合并原理是将相同的材质进行合并操作 ...

最新文章

  1. qemu模拟A9/A15运行Linux4.2.3
  2. Python 中最强大的错误重试库
  3. suse linux 命令
  4. SQL Server调优系列进阶篇(如何维护数据库索引)
  5. codeforces 101466E Text Editor(hash)
  6. 小程序使用wxParse解析html
  7. 动态密码卡TOTP算法
  8. Fluent Ribbon 第三步 应用程序菜单
  9. String为null
  10. pandas 数据索引与选取
  11. linux的apache安装在哪个目录,在linux系统下apache的默认安装路径在哪
  12. Python实现微信朋友签名云图项目
  13. html禁止手机截屏,[置顶] Android 应用内禁止截屏功能的实现
  14. hi3559AV100上交叉编译faiss(facebook research)
  15. 金山发布数字办公平台
  16. python 爬取链家二手房信息
  17. Windows打开文件后提示,文件或目录损坏无法读取。
  18. [ C语言版 ] 数独计算器 [ 搜索剪枝法 ]
  19. Springboot毕设项目计算机类专业工程认证资料管理系统+e65c9(java+VUE+Mybatis+Maven+Mysql)
  20. [附源码]java毕业设计基于Web的美食网站的设计与实现

热门文章

  1. ​多任务学习漫谈:行梯度之事
  2. 北京大学孙俊教授课题组深度视频研究室招收2021级博士生
  3. 2.2tensorflow2官方demo
  4. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task5:模型训练与验证
  5. Show Attend and Tell的实现代码中的python知识学习
  6. debug assertion failed是什么意思?_MD5是是什么?为什么很多压缩文件上都有这个东西?...
  7. 07丨行锁功过:怎么减少行锁对性能的影响
  8. spring-基于xml的aop开发-快速入门
  9. 汇编语言——《子程序应用(数制转换)程序设计》实验报告
  10. Python——pip批量安装和卸载package