XCode内存和UnityProfiler内存有较大差值

XCode内存和UnityProfiler内存有较大差值

1)XCode内存和UnityProfiler内存有较大差值
​2)Dynamic Bone插件和Job System的写法哪个好
3)编辑器中iOS平台SoftShadow无效
4)Unity 2021中阻止AssetPostprocessor代码改变导致相关资源Reimport


这是第313篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Memory

Q:我们将XCode的内存和Unity Profiler的内存放在一起,发现二者存在600MB的差值,且GAP呈上涨趋势。

将已知的第三方插件(不到100MB)、IL2CPP Metadata Cache(100MB左右)等排除掉后,仍无法解释差值原因。

A:我们曾对Unity内存和XCode内存不同的问题做过一些测试。


这个是在Unity 2021里面看到的空场景测试,看起来是一样的。


另一个稍微复杂些的项目,也是一样的。

在2021里面,Unity会统计OS层的数据,和Unity Tracked差异的内存会作为UnTracked的记录;在2021之前的版本,Profiler是不会统计UnTracked这部分,在Memory Profiler里面可以看到,普通的Profiler里面是不会统计的。

所以总的来说,就是Unity和XCode统计的范畴不一样,可以参考这篇文章的说明:
https://toutiao.io/posts/j5m47yp/preview

对于UnTracked的部分,Unity官方文档也有说明:

感谢小ben@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/63687cdf9b19755f97a8aae5


Scripting

Q:Dynamic Bone插件出了多线程的版本,但是并不是使用Job System写的,请问下和Job System的写法哪个性能更好一些?

A:专门做过测试,Job System的性能更好一些。

使用坚果R2(骁龙865)进行的测试,测试的模型是8个骨骼,测试结果如下:

感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6371fc2b9b19755f97b1c669


Rendering

Q:Unity 2020.3.40版本SoftShadows在MAC电脑上iOS平台为什么不生效?

Unity都是新下载的,没有进行过任何修改。各个平台直接进行切换,什么东西都没有改动。

1.环境:MAC电脑;Unity:2020.3.40;平台:iOS;结果:软阴影没有效果

2.环境:MAC电脑;Unity:2020.3.40;平台:PC;结果:软阴影有效果

3.环境:Windows电脑;Unity:2020.3.40;平台:Android;结果:软阴影有效果

4.环境:Windows电脑;Unity:2020.3.40;平台:PC;结果:软阴影有效果

5.环境:Windows电脑;Unity:2020.3.40;平台:iOS;结果:软阴影有效果

6.环境:Windows电脑;Unity:2020.3.40;平台:Android;结果:软阴影有效果

A:经过测试,在真机上看Unity 2020的SoftShadow也是有效果的。以下测试是在编辑器中。

在Unity 2020上复现了问题,但是在2021上,iOS平台也能看到SoftShadow是起作用的。

下图是2020上iOS平台开启SoftShadow的图,可以看到_MainLightShadowOfset的数值都是0。



下图是2021上iOS平台开启SoftShadow的图,可以看到_MainLightShadowOfset的数值不是0。


差别主要来自于MainLightShadowCasterPass脚本,在2021的版本里面是没有判断m_SupportsBoxFilterForShadows的,所以_MainLightShadowOfset赋值正确了。

感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/636268dda192b2284281a26d


Editor

Q:为什么在Unity 2021中,阻止AssetPostprocessor代码改变导致相关资源Reimport?

2021开始Unity有了一个新的特性 - 在继承AssetPostprocessor的类有较大改动时,经常试图重载相关类型的资源。

实践中,因为项目资源Reimport会花费大量时间,多数修改期间都是只刷新部分路径验证。之后才会在统一的时间刷新项目的资源组。

现在有没有Editor配置可以阻断代码改动造成的资源重载?或者一些可以自动裁剪Library资源以及修改Meta文件,但不会在相应代码修改被触发的流程?

A:之前也问过,可以参考以下解答:
https://forum.unity.com/threads/unity-made-full-project-reimport-on-every-small-change.1066844/#post-7647370

感谢海贼猎人@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/635ba1d9a192b228427b51e9

封面图来源于网络


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)