首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Unity 2017 场景光照烘焙信息过大……

我们将从日常技术交流中精选若干个开发相关的问题,建议阅读时间15分钟,认真读完必有收获。如果您有任何独到的见解或者发现也欢迎联系我们,一起探讨。

渲染

Q:我们的版本是Unity 2017,我们的美术烘焙出来的场景光照贴图中,还带了一个Lighting Data Asset这样的文件,查询相关资料显示是包含了贴图采样信息等内容,按理说应该不会很大,可是现在项目里,这个文件达到了90MB一个场景很不正常。有人建议是把这个东西删掉索引,不要打包。但是不知道这样场景里的灯光贴图还可以正常加载么?

A:建议题主可以看下文档(https://docs.unity3d.com/Manual/LightmapSnapshot.html)里的两条描述:

The asset is an Editor only construct so far, so you can’t access it in the player.

Currently, this file is a bit bloated as it contains data for multiple platforms - we will fix this. Also we are considering adding some compression for this data.

所以这90MB并不是全都打到包里去的,但里面所保存的必要信息,打进包里后,具体有多大确实不好评估。一般来说,不开启Precomputed GI的话,应该是不大的。“把这个东西删掉索引”再打包的话,理论上Lightmap是会丢失的,得自己来动态加载和设置的。

该问题来自UWA问答社区,如您对该问题仍有疑问,可以转至社区进行进一步交流。

https://answer.uwa4d.com/question/5a4f4367e041ef3c50c9ce64

内存管理

Q:真机测试环境下,在Profiler里查看内存使用情况,发现ShaderLab一项占用内存很大,里面主要是什么?减少了Shader的变体后这部分内存有所下降,没有使用Unity内置的Standard Shader。能否在不减少变体的情况下,减少这一部分占用的内存?

另外,也发现同一项下的Objects占用也很大,这是为什么呢?

A:ShaderLab是项目在编译Shader时产生的解析Buffer,其内存增长的特点就是Key words越多、变体越多,其内存占用越大。目前,还没有看到有不减少变体的情况下,可以减少该内存占用的有效方法。如后续有找到,我们也会来及时更新这块的内容。

至于Objects,建议搜索题库,来查找之前相应的回答,比如这里:

https://answer.uwa4d.com/search/objects

该问题来自UWA问答社区,如您对该问题仍有疑问,可以转至社区进行进一步交流。

https://answer.uwa4d.com/question/5a4d8df42b7c402cc97294a3

动画

Q:我们导入anim后缀的文件进行精度处理后某些信息丢失,如下图所示:

修改的代码如下:

修改前后的例子已经上传到UWA问答社区。

A:丢失的信息是mEditorcurves, 该字段只对anim在Editor中的内存占用产生影响,对其在真机运行时的动画效果与内存占用并无影响。因此该字段列表为空与否不会影响其在真机中的表现,可以用提问中的方式对其进行精度处理。如果想保留该字段(虽然对真机内存无影响),可以通过文本处理的方法对anim文件进行精度处理,处理时跳过mEdtorcurves字段。

该问题来自UWA问答社区,如您对该问题仍有疑问,可以转至社区进行进一步交流。

https://answer.uwa4d.com/question/5a4254efebf015c04f5ed54e

资源管理

Q:场景使用Static Batch似乎会将所有用到的模型合并成一个大的网格并保存成文件,导致场景的AssetBundle很大,而且会导致场景的模型文件和场景文件资源似乎有重复。

如果场景不标记Static Batch,而是加载完成之后动态去设置Static Batch,尺寸会减少吗?

A:是的,标记Static Batch会生成额外的Combined Mesh数据,这个往往占据较大的包体和内存。不标记Static Batch,加载之后通过StaticBatchingUtility API来动态设置也是一个很好的选择,唯一的不同是拿场景加载的时间来换空间。

该问题来自UWA问答社区,如您对该问题仍有疑问,可以转至社区进行进一步交流。

https://answer.uwa4d.com/question/5a40eafdb319bedd3bec6d91

资源管理

Q:请问在Unity 5.6.4中解决了foreach导致的堆内存分配问题了吗?

A:在Unity 5.6中,foreach确实不产生堆内存分配了,另外感谢王亮的补充,在Unity 5.5.5p1中也已经修复了该问题。

该问题来自UWA问答社区,如您对该问题仍有疑问,可以转至社区进行进一步交流。

https://answer.uwa4d.com/question/5a4c575c2adbd673cb602a33

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180108A0RMMB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券