5评论

UGUI优化:批次合并源码分析及工具

figolai 2017-02-23 2.5k浏览

想免费获取内部独家PPT资料库?观看行业大牛直播?点击加入腾讯GAD游戏开发行业精英群156225479

1.   概述

本文档对Unity GUI 批次合并(Batching)源码(基于Unity 4.6版本源码)进行研究,总结UGUI Batching的规则,并提供UI优化建议,以及UI层级显示辅助工具使用说明。

2.   UGUI Batching规则分析

UGUICanvas为单位进行批次生成和渲染,Canvas可以嵌套包含Canvas

Batching的生成和合并在canvas::Update里:

Batching主要流程如下:

1)计算Canvas alpha,包括父Canvas和嵌套Canvasalpha=0不生成及合并批次)。

2)UI层次结构发生变化时,更新Batch顺序,对Canvas下所有UI元素(Canvas renderer)按UI层次结构深度优先排序,生成UI Instructions

注意1 Mask:其中有mask UI会增加两个UI Instructionsmask / unmask),且不能合并(最终增加两个drawcall,分别使用Increment / Decrement mask Material Instance)。Mask实际上是前后使用或移除Stencil mask(来做像素剔除),在之间画所有子UI元素,mask UI下的子UI元素也无法与mask UI 之外的UI元素合并批次。

 <