天天看点

Unity中UGUI的最佳实践(优化经验)

基本原则
减少GameObject数量
减少GameObject上挂的组件数量
减少元素变动带来的消耗
减少依赖资源的数量及大小
减少常驻元素的每帧开销
预计算以少量储空间换高消耗的时间
延后处理,以很小的计算量换大量存储空间

UGUI制作最佳实践(具体项目具体分析)

  1. 实现无需渲染的事件接收组件。用其代替空的Image
  2. 减少UGUI无用的且需要渲染(Image/Text/RawImage等)的组件,(如空的Image)
  3. 需要渲染的组件,尽量不重叠
  4. 需要渲染的组件,重叠的尽量合并
  5. 减少不必要的GameObject节点。能放在同一级,就不要构建空的父节点
  6. 减少不必要的Component组件。能使用一个组件实现的就不要使用两个,不用最好。
  7. Horizontal Layout Group / Layout Element等组件,界面调好后,应该删除。自动国际化有冲突?
  8. Tween自定义实现,以减少脚本数量,及性能可管控
  9. 按键事件及摇杆事件应该统一监听,再下发给相应组件,以减少脚本数量。
  10. 样式相同的Text要使用代码改变内容,而不是创建两个,Disable其中一个。
  11. 样式相同的Image要使用代码改变内容,而不是创建两个,Disable其中一个。
  12. 能不用Mask就不用,能用Mask2D就不要使用Mask
  13. 能使用Image就不要使用RawImage
  14. 不要使用UGUI Outline及Shadow组件,使用自定义的
  15. 不需要接收触摸事件的UI元素,不要勾Raycast Target选项
  16. 界面保存时不要保留脏数据,如:预览文本及图片
  17. 界面打开只能使用本界面Atlas及Common Atlas
  18. 需要一个方便的缓存机制,有缓存需要时,使用其解决重复加载及实例化的问题
  19. 通用资源模板化。Button等
  20. 特效尽可能分步加载,不要直接拖到界面里面。
  21. 循环可复用列表
  22. Canvas,动静分离。频繁变化的与偶尔变化的分离。
  23. Image/Text的Color变化不需要Graph.Rebuild。可自定义修改Canvas Renderer的Color或者Alpha值
  24. 字体裁剪,及字体大小为固定的几档
  25. 裁剪UGUI的部分不需要的功能。如Button的颜色变化的disabled color一般用不到
  26. 可变图标,不同版本使用不同图片显示。如:PC下Esc,主机版本显示OB等
  27. 美术:图片尽可能的做小一点,不要多浪费一个像素。图片支持9宫格拉升操作及旋反转等拼接操作。
  28. 镂空九宫格实现,回形图片顶点UV方式渲染。需要自定义Image
  29. 翻转图片实现,左中右、上中下、顶点UV方式渲染。需要自定义Image
  30. 清空无效引用关系。如:Manifest的空值
  31. 能在制做的时候关联的,就不要在运行时去关联。如:GetComponent系列函数