FairyGUI学习

DrawCall优化

知识点一 DrawCall是什么?

DC就是CPU通知GPU进行一次渲染的命令

如果DC次数较多会导致游戏卡顿

我们可以通过打图集,将小图合并成大图,将本应n次的DC变成1次DC来提高性能

知识点二 FairyGUI 和 UGUI以及NGUI的 DrawCall优化异同

相同点:

3种UI都是通过打图集来优化DC

不同点:

UGUI和NGUI的UI元素层级会影响DC的数量,我们拼UI时,要注意不同图集的UI元素的层级关系

FairyGUI中不用太过在意UI元素的层级,它会帮助我们进行深度调整

FairyGUI采用了Unity的动态批处理技术,提供了深度调整技术进行DC优化

动态批处理:cpu每帧把可以进行动态批处理的网格进行合并,再把合并后的数据传给gpu,使用同一个材质对其渲染,达到降低DC的目的

知识点三 FairyGUI中优化DrawCall的关键步骤
cs 复制代码
  TeachPanel panel = UIManager.Instance.ShowPanel<TeachPanel>("Teach");

1.打开Unity中的动态批处理 File------>Build Setting------>PlayerSetting------>Other Setting------>Dynamic Batching

2.将组件的fairyBatching属性设置为true

cs 复制代码
    panel.fairyBatching = true;

**注意:**某个组件设置了fairyBatching,那么无需在子组件和孙子组件再启用fairyBatching

一般只在顶层组件打开这个功能(面板组件)

永远不要在GRoot 上开启fairyBatching

知识点四 手动触发深度调整

对于打开了fairyBatching 的组件

当自己调用SetPosition 等API 改变子元件或者孙子元件的位置、大小,旋转或缩放

并不会自动触发深度调整

例如:一个图片原来显示在一个窗口里的顶层,你将它从原来的位置移到另外一个位置,这个图片就有可能被窗口里的其他元素遮挡,这时开发者需要手动触发深度调整GObject 中的InvalidateBatchingState 方法

cs 复制代码
 panel.InvalidateBatchingState();

注意:这个API并不需要由开启了fairyBatching 的组件调用

可以是任何一个内含的元件

相关推荐
别动我齐刘海2 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人
m4Rk_2 小时前
【论文阅读】Agent 记忆机制(99):PrisMem——从整体分数搜索走向能力驱动的记忆自进化
论文阅读·人工智能·学习·开源·github
PC2005-cloud3 小时前
Mysql学习笔记:InnoDB Cluster 集群从零搭建实战,基于 Docker 实现高可用读写分离架构
笔记·学习·mysql
小陈phd4 小时前
深入理解agent学习笔记(七)——动态提示词与Skills
笔记·学习
我命由我123454 小时前
田野笔记极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
一木 之林4 小时前
微信小程序开发全攻略·文章版|00 总览:74集学习路径与知识地图
人工智能·学习·计算机视觉·微信小程序·小程序
棉猴4 小时前
玩游戏学Python9-算术运算符应用1
python·游戏·pygame·玩游戏·游戏编程
ndsc_d4 小时前
AI生成的UI如何继续修改?画布内生成与独立AI设计工具比较
人工智能·ui·ai·ui设计·ai设计·ai设计工具·ai生成ui
小陈phd4 小时前
深入理解agent学习笔记(六)——提示工程-优化系统提示词
笔记·学习
诸神缄默不语5 小时前
小春学习日刊 2026年第1期:2026.10.13
学习