美文网首页unity优化unity3D技术分享征服Unity3d
如何在使用NUGI的时候减少DrawCall的产生(转)

如何在使用NUGI的时候减少DrawCall的产生(转)

作者: Jens丶 | 来源:发表于2017-04-17 17:44 被阅读99次
且行且珍惜
Unity摊

1、NGUI图集的使用。

在使用NGUI制作界面时,图集的选用是一个关键,因为它直接关系到了drawcall的数量。最好就是自始至终都只使用同一个图集中的元素,这样的话,在界面制作上drawcall的消耗就只会受到Panel的划分以及字体与图集的混合使用这两部分的影响。
在制作图集时,可以分为两个制作方向。一是以NGUI自带的某一图集为基础,将自己需要使用的元素添加到该图集中。这样做的好处是可以在界面制作时使用NGUI提供的一些元素。再一个方向就是制作一个全新的图集。这适合于对界面进行整体设计的情况,全部的界面元素都进行重新设计,然后制作成图集来使用。
另外,在使用NGUI自带的图集时,要注意在该图集的副本上进行新元素的添加、删除操作,避免对NGUI自身造成不必要的影响。


2、界面元素深度的设置与drawcall的控制。

在使用NGUI制作界面时,如果我们自始至终都使用唯一的图集,界面上的文字使用动态字体制作,那么drawcall的消耗数量就只与Panel的划分以及同一个Panel下图集元素与字体元素的深度设置排列有关了。
我们知道,在NGUI中,它消耗的drawcall是以每个Panel为独立计算单位进行计算的。所以我们只要把一个Panel下的drawcall计算方式搞明白,然后再对Panel的划分加以控制,就能都达到有效控制drawcall的目的了。
在同一个Panel之下,如果所有的界面元素都使用同一个图集来制作,而且没有动态字体的“干扰”,那么该Panel消耗的drawcall数量就是1。这可以通过鼠标选中UIPanel的游戏对象来查看drawcall的使用情况,如图所示(只消耗了1个drawcall)


还是在同一个Panel之下,如果在图集使用过程中,还配合使用了动态字体,或是使用了不同的图集,那么该Panel下drawcall的计算就和其下元素的深度设置密切相关了。一句话总结就是:为同一图集的元素设置一段独立的深度值区间,不同的图集元素或动态字体使用不同的深度值区间,尽量不要穿插。举例说明:

   > 在同一个Panel之下,假设
    深度值区间 (-200, -100),图集1元素使用;
    深度值区间(-100, 0),图集2元素使用;
    深度值区间(0, 100),图集3元素使用;
    深度值区间(100, 200),图集4元素使用;

    >按照上述情况计算,该Panel的drawcall值为4。但是,如果我们在使用时,不同的图集或动态字体的深度值出现了穿插,那么drawcall会出现猛增的情况,因为这里的drawcall计算方式是在使用的整个深度区间上,每遇到一个不同的图集,drawcall就会加1,不论该图集之前是否使用过,与此没有关系,都会加1。这就要求我们,在不影响功能实现的前提之下,对界面元素的深度值进行合理的排布设置。

3、动态字体的使用。

把字体也融入到图集之中,字体图集,将所有使用到的文字处理成一张图片进行使用,比较适合英语国家, 但是如果这么做,那么drawcall的消耗数量就又能降低不少了,相当于从使用两个图集变成只使用一个图集。

最后,此文转自: http://blog.csdn.net/Haohan_Meng/article/details/38307901, 感谢总结.

相关文章

  • 如何在使用NUGI的时候减少DrawCall的产生(转)

    1、NGUI图集的使用。在使用NGUI制作界面时,图集的选用是一个关键,因为它直接关系到了drawcall的数量。...

  • 优化UE4性能 、减少DrawCall——材质中使用自定义基元数

    优化UE4性能 、减少DrawCall——材质中使用自定义基元数据 UnrealEngine减少DrawCall有...

  • GPU Instancing 功能测试

    GPU Instancing 用于减少渲染大量相同物体时的DrawCall,同样减少DrawCall的方式有 Dy...

  • UE4模型合并MergeActors

    地编基本功,地图东西摆放完毕要进行性能优化的时候使用的合批功能,能显著减少drawcall。同时你也可以通过使用d...

  • UGUI+图集+AssetBundle

    这套流程解决的问题:减少UI造成的drawcall较高(不打图集小图都会占用drawcall的),而且需要动态加载...

  • UGUI(2) 减少DrawCall

    一、动态合批 要求相同材质,图集 注意sprite穿插,影响合批。 为什么sprite层级会影响合批?这关联到渲染...

  • Unity-性能优化

    CPU优化 视锥体剔除,遮挡剔除 合理安排图片和材质,使用unity批处理( 减少DrawCall)1.合并模型2...

  • Unity3D材质平铺实现大地图

    项目中需要制作平面地图,基础地块都是一样的,为了减少drawCall,我想使用单个对象来实现大面积的地层,即创建了...

  • unity插件——Draw Call Minimizer

    提要Draw Call Minimizer(下简称DCM)是一款来减少DrawCall的很好用的插件。总的来说:它...

  • 减少垃圾的产生

    生活中经常会产生很多的垃圾,现在也倡导垃圾分类,但我觉得更重要的是减少垃圾。 比如,使用多次使用的菜篮子,购物的塑...

网友评论

    本文标题:如何在使用NUGI的时候减少DrawCall的产生(转)

    本文链接:https://www.haomeiwen.com/subject/gfotzttx.html