头图

资源打包关系依赖树

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官网:[链接]

33 声望
12 粉丝
0 条评论
推荐阅读
Wwise内存问题
Q:Unity自带的Profiler工具不能对Wwise内存进行Profiler,用Wwise Profiler只能看到一个总的Total Used,具体加载了哪些没有一个具体的表格,有什么工具或者方法可以截取音频的内存快照呢?

侑虎科技阅读 79

封面图
CesiumJS 源码杂谈 - 从光到 Uniform
之前对实时渲染(RealTimeRendering)的殿堂就十分向往,也有简单了解过实时渲染中的光,无奈一直没能系统学习。鉴于笔者已经有一点 CesiumJS 源码基础,所以就抽了一个周末跟了跟 CesiumJS 中的光照初步,在简单...

岭南灯火阅读 738

封面图
一文讲透 Redis 事务 (事务模式 VS Lua 脚本)
准确的讲,Redis 事务包含两种模式 : 事务模式 和 Lua 脚本。先说结论:Redis 的事务模式具备如下特点:保证隔离性;无法保证持久性;具备了一定的原子性,但不支持回滚;一致性的概念有分歧,假设在一致性的核心...

勇哥java实战分享阅读 540

封面图
如何在运行时优雅地Reset DOTS
1)如何在运行时优雅地Reset DOTS​2)用顶点着色器进行旋转的Shader放在Image上不能正常工作3)FrameBuffer Fetch在确定支持的手机上显示全紫4)Unity系统中,Android端判断GamePad文件在不在

侑虎科技阅读 292

封面图
Unity升级后打包AssetBundle变慢
1)Unity升级后打包AssetBundle变慢​2)打包使有些资源合成了一个资源data.unity3d,有些分开的原因3)Unreal在移动设备中无法使用Stat命令获取到GPU Thread的耗时4)Unity中如何看到相机视野范围内的剔除结果

侑虎科技阅读 282

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

侑虎科技阅读 262

封面图
TMP的阴影性能如何
1)TMP的阴影性能如何​2)CommandBuffer.DrawMeshInstanced无法画阴影问题3)Unity编辑器在Require大量加载Lua文件时,经常报出not enough memory4)场景制作的时候,2D资源受后处理调色影响比较大

侑虎科技阅读 203

封面图

UWA官网:[链接]

33 声望
12 粉丝
宣传栏