关于unity的问题?

有谁能给我说说这stats里面都是什么用?优化什么的可以通过这里显示出来么。我想知道通过这些数据能看出来什么... 有谁能给我说说这stats里面都是什么用?优化什么的可以通过这里显示出来么。我想知道通过这些数据能看出来什么

这里的每一个参数的解释,百度搜搜就有,重点是drawcalls,这个是和渲染直接相关的,影响FPS最大的因素,另外,模型的面数Tris和顶点数Verts,也要注意,太多也会影响,下面那几个和硬件及设置相关,看看官方解释就知道了

你对这个回答的评价是?

下载百度知道APP,抢鲜体验

使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。

}

Reserved Total 和 Used Total为Unity引擎在内存方面的总体分配量和总体使用量。 一般来说,引擎在分配内存时并不是向操作系统 “即拿即用”,而是首先获取一定量的连续内存,然后供自己内部使用,待空余内存不够时,引擎才会向系统再次申请一定量的连续内存进行使用。所以,从图表中可以看到,Reserved Total 的内存占用量略大于 Used Total,

Q2:在UWA的帮助下,我们追踪到了一个Reserved GFX的内存占用,并且显示比较高。我们应当如何降低该内存占用呢?

一般来说,Reserved GFX 中的内存,主要是纹理和网格资源,可以尝试对纹理格式进行检测,尽可能使用硬件支持的压缩纹理;而对于网格资源,则可以从减少顶点或者顶点属性入手。

另外,更重要的是检测纹理和网格资源是否存在冗余(多份一样的资源)或者泄露(比如,主城中的大纹理出现在战斗场景中),这是需要极力避免的。关于资源冗余、内存泄露,开发者可以参考我们之前的文章《 性能优化,进无止境——内存篇(下)》。

Profiler中的Not Saved指的是项目中通过代码生成的各种资源记录。如上图所示,其Mesh均为NGUI插件通过脚本生成的UI界面Mesh资源。

Q4:如图,在Editor中查看Profiler里的内存详细信息,发现Used Total中有个“Unity”,请问是什么意思?为什么会特别大?

在Editor中运行时,“Unity”大是正常的,因为在Editor中运行项目时,引擎包含了所有的资源占用的内存(除了部分纹理和Mesh是在GFX中),同时自身会进行很多的辅助操作来记录各种游戏运行信息。一般来说,在查看游戏运行时的真实消耗内存,我们均是推荐直接在发布游戏上通过Profiler进行查看,在Editor中运行游戏所看到的内存是要大很多的。

Q2:字体作为多个资源的依赖包,会在游戏中被加载多次。我们现在有个问题,AssetBundle A资源依赖于这个字体,加载A的时候加载了一份字体,然后B资源也依赖这字体,而后加载B的时候我们没有去重复加载字体,这时候发现B资源上出现了字体丢失的现象。请问加载资源的时候,Unity会自动去识别内存里是否有它的资源依赖包吗?如果有的话,为什么B加载的时候找不到已经存在内存中的字体?这里需要手动去做些什么处理吗?
同时我发现依赖包资源如果进行了/article/

}

最近的项目优化GC,其中看到关于GetComponent的GC消耗非常之大,看起来很吓人。那么这个GC到底是怎么来的?又如何避免呢?

大概意思是说,因为Unity重写了Unity.Object的==方法,所以当使用GetComponent 获取组件的时候,如果是个不存在的组件,就会产生警告字符串。这就是GetComponent 的GC来源,但这个GC只会在编辑器下出现,而且只会在获取到空组件的情况下发生。

写一个简单的代码进行测试:


 
这个挂载的物体挂有一个Image组件,而没有Animation组件。然后运行起来,看Profile,效果如下:





虽然执行次数是同样的,但是由于没有Animation组件,所以产生了很多GC。而Image能获取到,所以就没有产生GC。至于是否是只在编辑器下才会有,没有测试过。这里选择相信一波Lucas Meijer吧。


虽然Profile是性能分析的利器,但是有的时候在编辑器的情况和真机情况下不一样的。有时候在编辑器下看到的问题在真机上不会出现,这种时候就需要特别注意了。


就事论事的话,GetComponent 的GC是不用考虑对其进行优化的。不过个人还是希望Unity能让他没有GC算了,或者让开发人员能选择性地进行开关。

}

我要回帖

更多关于 unity is trigger 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信