头图

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(原群已满员)


侑虎科技
33 声望13 粉丝

UWA官网:[链接]