为什么同一个Camera有两个RenderSingleCamera的耗时

为什么同一个Camera有两个RenderSingleCamera的耗时

1)为什么同一个Camera有两个RenderSingleCamera的耗时
2)Unity 2022中SBP打包报错问题排查
3)Application.lowMemory在什么时候会生效
4)一般iOS机型要超过其运行内存的多少会容易崩溃


这是第404篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:community.uwa4d.com
UWA QQ群:793972859

Rendering

Q:我们发现项目里有对同一个Camera的两个RenderSingleCamera的耗时,这是合理的吗?且全程RenderPipelineManager.DoRenderLoop_Internal这个函数每帧会执行2次还有可能执行4次的。

因此有以下疑惑:
1. RenderPipelineManager.DoRenderLoop_Internal什么情况下可能每帧执行多次?
2. 两个耗时有何区别
我在RenderDoc里也抓了下帧,确实有重复的Colour Pass,看起来明明已经画了一遍了,然后又画了一遍,Unity的FrameDebug只能看到一次。

A:RenderLoop在堆栈里面看到执行多次的情况通常是有Camera设置了RT作为其RenderTarget。

这两个是URP执行的两个阶段,前面可以看做初始化和Culling阶段,后面是提交Drawcall的阶段,以前在Built-in管线,前面的各种逻辑都是写在Native层的,URP把这个阶段封装了C#,方便开发者自己管理。

针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/66f8cf8f682c7e5cd61bf8e8


AssetBundle

Q:Unity 2022使用SBP打包总是报错:Assertion failed on expression: 'info.preloadSize == loadInfo.includedObjects.s。

环境:
Unity 2022.3.30f1
SBP 2.01、SBP 2.1.4,使用CompatibilityBuildPipeline打包

问题:
打没有缓存的资源,很容易出报错:

Assertion failed on expression: 'info.preloadSize == loadInfo.includedObjects.size() + loadInfo.referencedObjects.size()'

UnityEditor.Build.Pipeline.CompatibilityBuildPipeline:BuildAssetBundles (string,UnityEditor.AssetBundleBuild[],UnityEditor.BuildAssetBundleOptions,UnityEditor.BuildTarget)

A:结论:同一个包里不允许资源重名(我们所在的版本里资源记录没有路径也没有拓展名)。

下面放两张对比图,跟问题到底错在哪里无关,只是说明下二者的差别。

我尝试通过解包的内容确定出错的根本原因或者表现,但是没有成功。只在中间某个环节推测是重名问题,并进行了一系列测试,确认了这个结论。


2022里有问题的内容列表


2018里正常的内容列表

感谢题主Walker@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/66d28a99682c7e5cd61bf8c6


Memory

Q:Application.lowMemory这个方法大家有测过吗?如何生效?

A:由于Application.lowMemory仅在内存极其紧张时触发,因此不应该过度依赖这个回调来管理内存,尤其可能比较常见但其实有问题的、在回调中调用RUUA回收Unused资源的做法,不但降低内存的效果有限还会触发卡顿。正确的做法是通过优化资源管理、减少不必要的内存占用等方式来预防内存问题;或调用Resources.UnloadAssets或AB.Unload(True)的方式定向卸载内存。

针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/66f8cd1a682c7e5cd61bf8e6


Memory

Q:想问下,大家有没有测过iOS机型一般超过其运行内存的多少(比如50%)容易崩溃的数据吗?

A:我们项目测试过,但是有一些项目组反馈证明,即便是4G以上的中高端iOS设备,在内存超过1.8GB时闪退风险会比较高。

针对以上问题,有经验的朋友欢迎转至社区交流:
https://answer.uwa4d.com/question/66f8ce43682c7e5cd61bf8e7

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859