![44d5ca64c76170b42437b3b9d16c6490.png](https://i-blog.csdnimg.cn/blog_migrate/c2c8d7ef2b84e5c297c656b39ca53a85.jpeg)
1)AssetBundle包加载的场景会变暗
2)关于URP的合批问题
3)两次生成的AssetBundle包不一致
4)如何彻底卸载AssetBundle占用的内存
5)renderFrameInterval >1 导致半透明错误的额外叠加
这是第201篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。
UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)
AssetBundle
Q:我发现在项目工程下加载场景AssetBundle包会变暗,但是在打包工程和空工程下加载是正常的,不知道有没有人遇到过这个问题呢?
![f92809dda3e101521f3450fd5583e0f1.png](https://i-blog.csdnimg.cn/blog_migrate/38139b308e2754087ad77d5dfe6c2868.png)
![c9ede4690e532e814bb164d8cead61df.png](https://i-blog.csdnimg.cn/blog_migrate/357d309b9b4b3f52e3bd332a5b77b900.jpeg)
![9d828463c690228a98596d95982f3cca.png](https://i-blog.csdnimg.cn/blog_migrate/01f734b4e11c269a34e5e8bd665baedb.jpeg)
![b66a365a238c133cba09c592f3550afd.png](https://i-blog.csdnimg.cn/blog_migrate/6c1bfa2aac39c74a3a2d908fdd169914.jpeg)
![578f2cf9369f370f313a97521680e24b.png](https://i-blog.csdnimg.cn/blog_migrate/fbc0de013dc666aa26a9eef72136d0a1.jpeg)
A:原因是ColorSpace不一致,我突然想到曾经看到过Gamma和Liner不一致的问题,试了下发现能够解决这里的问题,所以只要改成Gamma就行了。
感谢题主WindowsXPC@UWA问答社区提供了回答,欢迎大家转至社区交流:https://answer.uwa4d.com/question/5e9e76e1979400061e545049
Rendering
Q:这几天在尝试使用URP,使用的渲染流程是3个Pass,第一个使用URP默认Pass渲染角色,第二个通过Renderer Features进行Stencil的Mask,第三个Pass同样使用Renderer Features进行Outline勾边。
第一个Pass因为使用ShaderGraph做的,因此是URP Batcher Compatible。第二第三个自己写的Shader,开始是不兼容的。但是目前已经改成了URP Batcher Compatible。
所有的材质都开启了Instance。首先从最后渲染效果达到目标,没有问题。但是观察合批数据,觉得有点疑惑:
Statistics内显示Batches有30个,Saved by batching:-27
![35f92a9a8b74cfafd6f75047d38dd369.png](https://i-blog.csdnimg.cn/blog_migrate/2e8a4da1bdbfba7171b994df1cc0b9a4.jpeg)
但是从Frame Debugger观察,角色渲染的3个Pass都进行了SRP Batch,一共16个批次。
![4d108f2e5c74fa19c911fb6471b7e118.png](https://i-blog.csdnimg.cn/blog_migrate/7e6a395ff80200764a6db244f2c64e20.jpeg)
而Profile里面显示的和Statistics基本一致。
![d3ba352471f5453405abd882a93780b3.png](https://i-blog.csdnimg.cn/blog_migrate/061f256be7d193d011a8a105be5d53c8.jpeg)
这儿的差异要怎么理解呢?
A1:看了以下链接,基本已经理解这儿的差异了。实际SRP的Batch并不是真的去减少Draw Call,所以数据有差异的。 https:// blogs.unity3d.com/2019/ 02/28/srp-batcher-speed-up-your-rendering/ 感谢题主黄程@UWA问答社区提供了回答
A2:这个现象应该还是属于Profiler和FrameDebuger的显示不统一的问题。
像Static Batching实际上也是如题主所说“并不是真的去减少Draw Call”,即GL层的glDraw数变化不大,但Profiler中的Batch数是大幅下降的;而SRP的Batch功能还比较新,所以估计还没把SRP的Batch和Profiler中的Batch统一起来。
该回答由UWA提供,欢迎大家转至社区交流:https://answer.uwa4d.com/question/5ea157f94d93790618e0eba2
AssetBundle
Q:在对Prefab进行打包时发现,前后两次打包,Prefab和所引用的资源都没有变化,生成的AssetBundle包中间却有几个数据不一致,导致计算出的MD5值不一样。
对比Manifest文件,确认Dependencies所依赖的AssetBundle包没有变化, 只是顺序发生了变化。所以是什么原因导致两次出包会有差异呢?
![71d0dc90bf090bdbbfd04b59bb87d07d.png](https://i-blog.csdnimg.cn/blog_migrate/4629c7cf75d27a5e8743e4e570afc8d8.jpeg)
![215af0a4b4af875e9ac9f3be57a8ab6b.png](https://i-blog.csdnimg.cn/blog_migrate/4b7f0aab0211d0e2f65c86ca079c78bb.jpeg)
A: 这是Unity引擎自己的特性,从4.x版本到现在一直都存在这种情况。所以,非常建议使用引擎自己提供的Hash值代替MD5来做为AssetBundle是否改变的判断。
该回答由UWA提供,欢迎大家转至社区交流:https://answer.uwa4d.com/question/5e902ead8cabe84a011afc72
AssetBundle
Q:我使用DownloadHandlerAssetBundle.GetContent()获取AssetBundle,会增加内存,但是使用assetbundle.Unload(true),好像并不能彻底卸载内存,或许已经彻底卸载了AssetBundle占用的内存,但是还有一部分没有被卸载。是不是DownloadHandlerAssetBundle.GetContent()这个函数的原因呢?
A: 使用Unity 2018.4.14f1打包exe测试,和这个问题是一样的。
如果aa依赖于bb,先加载bb再加载aa,可以彻底卸载;先加载aa再加载bb,就无法完全卸载;只加载aa也卸载不彻底。另外,前面的测试结果与卸载顺序无关。
感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:https://answer.uwa4d.com/question/5e99500ecd6a9b49fb4a4711
Rendering
Q:关于OnDemandRendering.renderFrameInterval的疑问。
![56d6e675be2de62adaf865415abfd0bd.png](https://i-blog.csdnimg.cn/blog_migrate/b83153da9cba261485be0ed180c03c91.png)
在一些静态UI的时候把OnDemandRendering.renderFrameInterval设置为3,表示渲染频率降为1/3。假设正常是30fps,那么渲染帧率就是10fps。但是在iOS手机上测试后发现一个问题,画面表现为透明的UI在一层层地叠加。
![0a0a4c33e4f1da6e94f159f839e98ccb.png](https://i-blog.csdnimg.cn/blog_migrate/598d5f094d5d22fe5f3da425daec372e.png)
可以看到,箭头的阴影很深,而实际上是很淡的一层阴影。由于渲染帧率降为30fps的1/3,所以每10帧clear一下,阴影并没有叠得很过分。如果把渲染帧设得更低,会看到阴影一层层叠加。
![e262681819898e8d3eaafbaebbcfae83.png](https://i-blog.csdnimg.cn/blog_migrate/7edc9bbaab027a5502a3febe6271822b.png)
请问下,这是Bug吗?还是有另外的设置?
A: 应该是Bug,Issue ID:1214921, Fixed in 2020.2.0a6,可查看Bug提交。
感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:https://answer.uwa4d.com/question/5ea10d084d93790618e0eba0
今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)