技术分享连载(二十九)

简介:

资源管理

Q1:我们现在为了美观,需要同时使用2套字体。但是每增加一套字体,就会内存增加50MB左右。请问你们在优化其他Unity游戏时,怎么处理类似情况的?

如果美术字不多的话,建议使用单独的字体贴图来进行实现,从而来达到特定美术字显示的效果;如果美术字较多的话,那么仅能建议使用另外一个套字体来进行实现。一般来说,字体的内存量应该也是完全可以控制在10MB以下的。

开发者可以直接在Unity Profiler中查看字体的内存占用,也可以通过UWA网站上测评报告中的具体资源信息页面查看对应的字体资源使用情况。
请输入图片描述


资源管理

Q2:我在UWA测评报告中看到该项CPU耗时很高,请问这是什么引起的?可以优化掉吗?
请输入图片描述

图中红色框中选项说明该项目在UI界面上文字较多,进而在Instantiate或Active时带来了较高的字体创建耗时;
蓝色框中选项,则说明了项目运行时存在大量的Log输出,我们建议尽可能在项目发布后将非关键Log信息进行屏蔽。如果该Log是系统打出的Warning或Error Log,则建议在“项目运行日志”界面通过Log堆栈对其进行详细检测和修复。

我们非常希望看到大家的项目在“项目运行日志”界面能够达到下图中的效果,即除了UWA的Start Log外,没有任何其他消息。
请输入图片描述


资源管理

Q3:请问这个Loading.UpdatePreloading是什么东西,为什么会突然那么高?一般情况下有没有什么优化的办法?
请输入图片描述

这是Unity引擎最主要的加载函数。该项一般在切换场景时或主动动态加载资源时较大。 一般来说,加载资源越多、越复杂,则其反映的Loading.UpdatePreloading耗时则越大。

优化之前,必须先定位该函数的CPU占用瓶颈。下图则为我们的案例项目,Loading.UpdatePreloading函数在UWA测评报告中的总体CPU分配情况。通过这个堆栈信息,开发团队就可以对函数的耗时分配一目了然,从而有的放矢地进行优化。
请输入图片描述


UI输入

Q4:请问,Canvas里的东西移出了屏幕后,DrawCall没降低,那么它还会每帧去绘制吗?

DrawCall没降低,说明CPU依然将这部分的网格提交到了GPU。因此虽然UI元素已经不可见,但其CPU开销(包括切换渲染状态,提交VBO等)依然是在的,只是对GPU不会造成明显影响,因为最终并没有进行像素的渲染。


资源管理

Q5:我在UWA报告中看到大量的n/a资源,其格式的高度和宽度等信息都无法获取,并且存在大量重复,请问我该如何定位这些文件?能否优化解决呢?
请输入图片描述

图中n/a资源是我们在项目运行时检测到的无名称资源,一般来说,该类型资源并非Asset文件夹中的美术资源,而是项目通过脚本动态生成的资源,比如new Mesh、new Texture等操作,即会生成这种类型的无名称资源。

对此,我们建议研发团队详细检测逻辑代码/第三方插件中诸如New Mesh/Textue等此类操作,同时,在脚本动态生成该类资源后,为其赋上一个名字,这样即可在后续测试中看到对应名称的资源使用情况。





原文出处:侑虎科技
本文作者:admin
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

目录
相关文章
|
API 图形学 iOS开发
|
图形学 atlas 索引
|
图形学 前端开发
|
前端开发 异构计算
|
缓存 前端开发 图形学
|
编解码 前端开发 图形学