你知道的越多,你不知道的越多 🇨🇳🇨🇳🇨🇳
点赞再看,养成习惯,别忘了一键三连哦 👍👍👍
文章持续更新中 📝📝📝
Proilier性能
drawcall不显示,显示SetPassCalls
渲染材质的先后顺序,材质渲染消耗时间,材质切换渲染切换一次:可以成为SetPassCalls,俗称DrawCall
切换渲染材质的顶点批次
一个批次渲染材质
面试经典:如何解决UI的卡顿
Canvas画布,节点!
Canvas优化要点
一个Canvas下的所有UI元素都是合并在一个Mesh网格中的,过大的网格Mesh更新时开销过大
合批优化:同一个批次进行渲染,三角形放同一个批次
移动会进行重新合批、重新绘制、开销大
一般比较复杂的UI界面,都拆分成一个独立的子Canvas
动静分离
静态UI不会被重建,动态UI会被重建
但是如果Canvas细分太多,会导致DrawCall增多
把同一个面板的UI资源放在同一个图集里,创建一个SpriteAtlas,将Sprite指定此图集
背包资源放在一个图集里
如果一个面板的UI资源来源多个图集,打开面板会卡段
背景大图不要和小图放在一起
还有一个Overdraw GPU优化
绘制区域有半透明元素,同一个位置,同一个像素点被同时绘制
新手引导,空的透明的四边形,点击屏幕任意位置开始
透明的UIImage
无图的UI遮罩点击优化
不执行点击的UI元素,不要勾选RayCaster,每一帧回去检测
少用布局组件LayoutGroup或者Content SizeFitter
用户操作 重绘 消耗大量计算时间
写算法自己算
Layout原理
遍历SetDirty对象会消耗性能
UI控件优化
Unity自带的ScrollView的问题
滚动,UI元素位置变化,Canvas就会重构,重新合批
如果ScrollView下的元素没有UI点击,千万不要去加RayCaster组件
Mask组件可见范围以外禁止显示,但不代表不渲染
ScrollRect控制滚动条,会把所以物品全部渲染,不会判断哪些不能被渲染
高性能滚动视图的实现思路
初始化滚动时
计算可视范围
遍历每一个格子,判定其是否位于可视范围内
如果可见,则显示,否则,隐藏
滚动时
重新计算可见格子
如果有格子移除,则将其格子用于新的格子的显示
类似对象池的思想
字体UI优化
角色名3D字体
文字+图标+血条
不用Text组件(有性能问题),使用TextMeshPro
🎁🌻🌼🌸 粉丝福利来喽 🎁🌻🌼🌸
- 免费领取海量资源 🎁
简历自测评分表、Unity职级技能表、面试题库、入行学习路径等- 《Unity游戏开发五天集训营 》50个名额 🎁
我给大家争取到了 50个《游戏开发五天集训营 》名额,原价198,前50个免费
扫码加入,暗号小听歌
即可参加ARPG狼人战斗系统、饥荒生存类游戏开发、回合制RPG口袋妖怪游戏等游戏开发训练营- 额外抽奖机会🎁
参加游戏训练营、还有机会获得大厂老师在线面试指导、或者有机会获得价值1998元的《Unity极速入门与实战》课程