资源打包关系依赖树
- 作者:admin
- /
- 时间:2022年03月30日
- /
- 浏览:1553 次
- /
- 分类:厚积薄发
1)资源打包关系依赖树
2)Coroutines产生了大量GC的问题
3)手机端的Soft Shadow如何生效
4)Skybox的环境照明问题
这是第292篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。
UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)
AssetBundle
Q:想做包体资源分析,大家有什么好的树显示工具或者思路推荐吗?有比较好的开源方案也可以。最简单就像N叉树一样,比如root一个文件名,然后展开整个树结构。
A:Unity的Treeview,以下是资源引用依赖查找工具ReferenceFinder的截图。
项目地址为:https://github.com/blueberryzzz/ReferenceFinder
感谢马三小伙儿@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/623c8322a43e6117d040ae9b
Script
Q:这种协程产生了大量的GC的问题应该要怎么去定位是在哪里触发的,怎么改呢?
A1:可以试试用这个插件查看一下协程的具体详情,看看能不能定位到问题。里面有个CoroutineTracker专门监控协程的。
https://github.com/GameBuildingBlocks/PerfAssist
感谢Xuan@UWA问答社区提供了回答
A2:建议如下:
- 不建议大量使用协程,会有开销,可以采用update取代。
- 如果协程里面产生了GC,可以关注一下是否里面有循环new对象,可以采用对象池或者用struct。
感谢aladdin@UWA问答社区提供了回答
A3:yield return new WaitForSeconds(1f);
像这种写法其实会产生GC,可以考虑把new WaitForSeconds(1f)提取到函数外。
感谢萧小俊@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/62397a9ea43e6117d03c8211
Rendering
Q:手机端的Soft Shadow如何生效?
A:可以参考UWA之前的博客文章:
《使用Fast Shadow Receiver优化渲染效率》
《如何实现更真实的软阴影效果》
如果用Unity自带的Soft Shadow,需要注意几个设置项,Graphics Settings里面的Tier2里面必须勾选Cascaded Shadows,这样才会有CollectShadows生成ScreenSpace的Shadowmap。
在Quality Settings里面设置的Cascade Level也会影响阴影的质量,下面两图分别是No Cascades和Four Cascades生成的ScreenSpace Shadowmap的效果。
No Cascades
Four Cascades
感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/62427081a43e6117d04873e2
Rendering
Q:A场景,通过additive的方式加载B场景。2个场景中都没有任何灯光(包括平行光)、Reflection Probe,且Enviroment Reflections的Intensity Mulitiplier为0,纯靠Enviroment Lighting中的Skybox进行照明。
但是SetActive为第二个场景之后,就会发现照明黑色,如右图所示。重新SetActive为第一个场景,环境照明正确,如左图所示。
如果模式不为Skybox而是Color,则没有上述问题。目前打算自建环境光球谐信息,而不使用unity_SHAr相关数据。有什么比较好的解决方案吗?
A:当把场景B设置为Active的时候,整个Game的Environment的设置就自动切换成场景B的设置了,这时候从FrameDebugger里面可以看到球谐系数变成0了。所以两个模型都黑了。
从Skybox改成Color,起作用的是下图中的3个数值,它们不是0,所以不是黑的。
切换场景A为Active的时候的渲染效果,球谐系数是可以获取到的,所以效果也是正常的,如下图。
所以尝试了一下对场景B进行烘焙,当有了LightingData后,切换到场景B,渲染效果也正常了。变亮了是因为场景B原始设置的Intensity multiplier是5,从FrameDebugger里面看球谐系数不是0了,应该是烘焙后的LihgtingData里面保留了球谐系数。
感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/62418a80a43e6117d047397d
今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)