湖南网站建设制作公司,都昌网站建设,无锡网站建设 推荐无锡立威云商,小程序制作模板网站今天看到一个问题#xff0c;主要说的是Unity中的UI资源合批的问题之前一直以为主要和UI资源在Hierarchy中的排列顺序有关#xff0c;但其实这并不是最主要的#xff0c;因为Unity会对同一个Canvas下的UI进行排序#xff08;注#xff1a;不同Canvas下的资源是不能够合批的…今天看到一个问题主要说的是Unity中的UI资源合批的问题之前一直以为主要和UI资源在Hierarchy中的排列顺序有关但其实这并不是最主要的因为Unity会对同一个Canvas下的UI进行排序注不同Canvas下的资源是不能够合批的而合批的关键就是这个【排序】先简单来说排序主要根据三个键值Depth、Material Id、Texture IdDepth通常来说就是我们理解的覆盖关系比如B覆盖在A的上方即A先渲染B后渲染那么我们可以把A、B的Depth分别为0和1、如果都没有个被覆盖那么大家的Depth都是0。Unity会先根据各个资源的Depth进行一个排序Materail 和 Texture在通过Depth进行排序了之后同一Depth中的资源会先后根据【Material】和【Texture】在进行两次排序以上就是Unity最资源排序整理的过程而在排序了之后就是合批。这里要注意的是排序和合批是相互独立互不影响排序做完了后根据整体排序的UI资源进行合批。举个例子在Hierarchy中有AABB两个资源如果深度都是0排完序后就是AABB那么就是两批如果深度有覆盖是01其中深度为0的资源是ABB深度为1的是A那么就是三批深度为0的资源是AAB深度为2的是B那么注意UI资源的整体排序依然是AABB所以还是两批所以可以理解为深度只是排序的时候的一个基准当排完序之后Unity会根据整体的排序结果进行合批合批的时候不会在乎他们是不是同一深度、材质和纹理。