相关文章推荐
好帅的扁豆  ·  Unity 性能规范·  1 周前    · 
慷慨大方的跑步鞋  ·  Azure OpenAI ...·  10 月前    · 
坏坏的金针菇  ·  中国保护知识产权网·  11 月前    · 
慷慨大方的红酒  ·  SpringBoot ...·  1 年前    · 

##合批原理:

1. Batch以Canvas 为单位,Canvas 之间互不影响,一个 Canvas 中包含多个 DC,判断依据:同一 Canvas?同一 Atlas?同一材质?同一深度?相同遮罩情况?

2.  Canvas 内如果 DC 发生变化(增加、减少、排序变化)会出发全部 DC 重新绘制;如果一个 DC 内发生变化会重建此 DC 内的 Mesh。

3.  此外 DC 太多也不行,一般情况下一个 UI 界面 30 个 DC 以内。

##避免Canvas重绘:

谨慎使用 SetActive,使用scale =0.01或者alpha = 0.01或者移到屏幕外CanvasRenderer.Cull为True等方式代替

尽量避免某些组件的材质发生变化

##减少DC内Mesh Rebuild:

动静分离,把变化的东西拆除单独的 DC,比如战斗伤害数字和血条、经常赋值的 Text。

如果 Mesh Rebuild 压力较大,如果是不改变的文字可以使用 Image 代替。

DC 内的内容越少 Mesh ReBuild 消耗越低

##减少DC:

尽量图集,避免组件图集穿插,字体也造成穿插(他是单独的图集),一般把字体放在最高层。

##尽量少用GameObject.SetActive()

使用 scale =0.01 或者 alpha = 0.01 或者移到屏幕外或者 CanvasRenderer.Cull为 True 代替

有可能造成 Canvas 的 DC 重绘,

Enable 和 Disable 的声明周期函数也会造成一定的消耗。

##Text:

少使用shadow和outline,outline多绘制4次,shadow多绘制1次,同时开启多绘制9次。

##Texture:

把可以合并的图片进行合并,比如单拆了一张图实际画到背景上也是可以的。

打图集避免大量空白,使用一些优化技巧,如图片旋转

可以适当缩小图片尺寸,比如图片尺寸缩小到 80% 左右一般情况下是没有问题的

## 不需要射线检测的组件关闭 RaycastTarget

## 只需要矩形遮罩区域有限使用 RectMask2D 代替 Mask

## 多数情况下应关闭 Canvas 的 PixelPerfect(UI 元素像素对应)

Canvas Canvas是用来放置所有UI元素的地方,所有的UI元素必须是这样一个Canvas的子对象。它给 Unity 的渲染系统提供按层划分的几何系统,负责将其内部的几何形状合并到批处理、生成合适的渲染指令并发送到 Unity 图形系统。 当UI元素变化时,它会重新生成网格并向GPU发起绘图调用,从而显示出UI。 生成这些网格会消耗大量 性能 ,需要将UI元素收集到批处理中,从而尽可能减少绘图...
100 禁止通过 new 的方式实例化 MonoBehaviour 的派生类,否则无法得到引擎有效的 管理。 规范 等级S 101 禁止在update,fixedupdate,lateupdate,ongui等频繁调用的逻辑中使用协程。规 范等级 S 102 禁止使用 Resources.Load 加载资源。个别特殊情况除外。 规范 等级S 103 禁止使用 Linq。 规范 ... 点击跳转=>熬夜再战Android从青铜到王者-开发效率插件篇 点击跳转=> Unity 粒子特效系列-龙卷风预制体做好了, unity package包直接用! 点击跳转=>姐姐喊我解锁套娃新技能:FairyGUI在 Unity 中实现List嵌套List/立体画廊等,玩出花儿来 点击跳转=> Unity 新手必备5款宝藏插件–价值上千元白嫖最新版 爆肝万字C#基础入门大总结【建议收藏】 Android修. 一:变量小写字母开头:int passWord = 123456; 二:函数大写字母开头:void GetPassWord(); 三:函数参数以"_" + 小写字母开头: void SetPassWord(int _passWord); 四:变量、属性、枚举、声明写最前面。 Unity 3D的 性能 优化: 一.缓存组件查找 另一个优化是组件缓存。这种优化需要一些代码并且不是