头图

URP管线下如何查看Overdraw

1)URP管线下如何查看Overdraw
​2)Lua局部函数调用回收机制
3)AssetBundle如何使用二次压缩算法缩减包体
4)URP的三角形面片数统计不准确


这是第262篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Rendering

Q:Unity内置管线里自带了Overdraw模式,但是在URP里面看不到Overdraw模式,请问有什么方便的方式来实现吗?

非URP如下图:

A:推荐参考这个做法:https://github.com/ina-amagam...

感谢Xuan@UWA问答社区提供了回答</font>

Lua

Q:在用插件LuaProfiler检测时发现,每次调用这个函数,其内存都会增加,不会减少。是我测试的问题吗?还是局部函数申请的作用域不会像局部变量一样随着函数调用结束而回收?

比如这样一个函数:

function MainWindow:RefreshAll()
local function func()
end
end

A:Lua使用GC方式是增量标记法,并不会直接回收内存。回收的时机和collectgarbage(“setpause”)、collectgarbage(“setstepmul”)这2个参数有关。

满足这2个参数的时候才会触发Stop the world然后进行GC,当然也可以直接运行collectgarbage(“collect”)来进行强制GC。

感谢萧小俊@UWA问答社区提供了回答</font>

AssetBundle

Q:AssetBundle太大,缩减包体使用什么二次压缩算法比较好?C#版7-Zip LZMA会不会冲高托管内存,请做过的大佬帮忙解答下,谢谢。

A1:二次压缩的做法并不常见,因为一个本身就是压缩文件的二次压缩,所能带来的体积缩小性价比并不高。同时,还要再搭上一次解压的时间,如果你是在C#中进行解压,很有可能会带来较高的堆内存分配,所以这种做法,绝大部分场景下都是得不偿失的。

该回答由UWA提供

A2:不是很推荐去做解压,时间成本和空间成本都比较高。建议检查一下资源的依赖关系 ,可以用UWA的在线AssetBundle检测服务分析一下资源有没有冗余,去掉冗余资源应该会小很多。然后图片的压缩格式一定要选“压缩率越高”,最后图片打包AssetBundle的时候就会越小。

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

Editor

Q:大家有没有遇到过URP下Editor里面Statistics面板的三角形统计不准确的情况?

A:这个是Unity的Bug,测试了Unity 2019.4.10下的URP,Editor下的Statistics里面的统计是不对的,需要把Graphics API从Direct3D 11切换到其他的平台,如Vulkan、OpenGLCore或者DirectD12,这样统计的三角形数量是准确的,同时也在Unity 2020.3.3f1版本中做了测试,Direct3D 11平台下也能准确统计三角形面片了。

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

20210809
更多精彩问题等你回答~

1.Vulkan与OpenGL的选择是否会对内存大小产生影响
2.Unity层透明Render over native UI
3.如何实现AAB包的增量更新

封面图来源于:URP Geometry Shader Example
URP中的几何着色器的示例。


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在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

封面图
Redis分布式锁的实现
很多新手将 分布式锁 和 分布式事务 混淆,个人理解:锁 是用于解决多程序并发争夺某一共享资源;事务 是用于保障一系列操作执行的一致性。我前面有几篇文章讲解了分布式事务,关于2PC、TCC和异步确保方案的实现...

KerryWu4阅读 6.8k评论 2

《Lua-in-ConTeXt》04:卡片
ConTeXt 输出的 PDF 文件,其页面尺寸默认与 A4 纸的尺寸相同。在今后,我可能要给出很多的排版示例。若给出排版结果的全貌,则 A4 尺寸太大了,会导致示例截图里的文字不够清晰。倘若能将页面尺寸设置为卡片大小...

garfileo阅读 991

《Lua-in-ConTeXt》01:Hello world!
ConTeXt,我不厌其烦地打出它的大小写字母,它的意思既非「上下文」,亦非「语境」或「环境」,而是 Text with TeX 的意思。这是荷兰人 Hans Hagen 为自己创造的一个 TeX 宏包而取的一个失败的英文名字。

garfileo阅读 929评论 2

《Lua-in-ConTeXt》02:ConTeXt 计算机
用于编写 TeX 源文件(例如 hello.tex)的任何一种文本编辑器,都可视为「ConTeXt 计算机」的终端。context 命令可将 TeX 源文件里的内容输出到 PDF 文件,于是可将 PDF 文件视为 ConTeXt 计算机的显示器。

garfileo阅读 896

《Lua-in-ConTeXt》05:时间戳
上一篇:卡片 我要在卡片的页脚区域增加时间戳,例如 {代码...} 然而,迄今为止,尚未介绍如何让 ConTeXt 支持汉字。汉字,一直是 TeX 世界之痛。与仅需要几十个字母的拼音文字不同,汉字要成千上万个字符。为汉...

garfileo阅读 880

《Lua-in-ConTeXt》06:伪竖排
在我的浅薄的审美范畴里,card.pdf 的页码没有在页脚(footer)的留白(Margin)区域居中,甚为不美。然而,card-env.tex 里的

garfileo阅读 748

UWA官网:[链接]

27 声望
12 粉丝
宣传栏