头图

资源打包关系依赖树

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/blueberryz...

感谢马三小伙儿@UWA问答社区提供了回答

Script

Q:这种协程产生了大量的GC的问题应该要怎么去定位是在哪里触发的,怎么改呢?

A1:可以试试用这个插件查看一下协程的具体详情,看看能不能定位到问题。里面有个CoroutineTracker专门监控协程的。

https://github.com/GameBuildi...

感谢Xuan@UWA问答社区提供了回答

A2:建议如下:

  1. 不建议大量使用协程,会有开销,可以采用update取代。<br/>
  2. 如果协程里面产生了GC,可以关注一下是否里面有循环new对象,可以采用对象池或者用struct。

感谢aladdin@UWA问答社区提供了回答

A3:yield return new WaitForSeconds(1f);

像这种写法其实会产生GC,可以考虑把new WaitForSeconds(1f)提取到函数外。

感谢萧小俊@UWA问答社区提供了回答

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问答社区提供了回答

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问答社区提供了回答


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

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

UWA官网:[链接]

27 声望
12 粉丝
0 条评论
推荐阅读
MeshRenderer如何使用GPU Instancing的材质球正常合批
1)MeshRenderer如何使用GPU Instancing的材质球正常合批​2)关于AssetBundle加密,如何重新实现LoadFromFile接口3)移动端开放世界类型游戏中选择动态阴影技术以及优化方案组合4)Unity导出Gradle工程,如何防止...

侑虎科技阅读 44

封面图
2022年度大赏 | UWA问答精选
UWA每周推送的知识型栏目《厚积薄发 | 技术分享》已经伴随大家走过了304个工作周。精选了2022年十大精彩问答分享给大家,期待2022年UWA问答继续有您的陪伴。

侑虎科技阅读 390

封面图
纹理开启Mipmap导致压缩失败的问题
1)纹理开启Mipmap导致压缩失败的问题​2)使用TextMeshPro能否避免使用Resources文件夹3)用透视摄像机去分层管理UI的优势和好处4)Houdini中切线空间向量怎么在Unity Shader还原出原向量

侑虎科技阅读 270

封面图
URP自带的Tone mapping性能开销问题
1)URP自带的Tone mapping性能开销问题​2)图集中未使用到Sprite也会被加载到内存中的问题3)GPU带宽:从纹理出发优化带宽①4)GPU带宽:从纹理出发优化带宽②5)GPU带宽:从纹理出发优化带宽③

侑虎科技阅读 235

封面图
在Runtime下,IL2CPP与Mono打包对应的PSS内存占用问题
1)在Runtime下,IL2CPP与Mono打包对应的PSS内存占用问题​2)获得AssetBundle内部依赖关系的方法3)Unity 2019 Streaming Mipmap在某些情况下采样等级错误4)根据RenderDoc的数据,计算渲染量

侑虎科技阅读 232

封面图
TMP耗时较高的优化问题
1)TMP耗时较高的优化问题​2)Unity重载Object后,如何判定物体是否为空3)SRP Batch在添加unity_SpecCube后的问题4)堆内存会持续上升,如何用UWA报告来分析

侑虎科技阅读 183

封面图
主界面边框流动效果长时间挂机后会卡顿
1)主界面边框流动效果长时间挂机后会卡顿​2)检测内存是否超过阈值问题3)堆内存会持续上升,如何用UWA报告来分析4)关于AssetBundle加密这块,如何重新实现LoadFromFile接口

侑虎科技阅读 176

封面图

UWA官网:[链接]

27 声望
12 粉丝
宣传栏