1)Unity将核心脚本打成DLL是否有性能影响
2)预制物嵌套导致AssetBundleName修改后对母预制物丢失引用
3)真人真机测试报告中AB.LoadFromFile耗时较高
4)如何剔除掉Shader中某一个Pass
这是第287篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。
UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)
Build
Q:Unity将核心脚本打成DLL,比如将某块核心系统打成DLL后,运行时调用DLL是否有性能影响?
感谢liu@UWA问答社区提供了回答
感谢郑骁@UWA问答社区提供了回答
AssetBundle
Q:Unity 2020.3.16预制物嵌套时,子预制物引用的图片AssetBundleName修改后,母预制物会丢失引用。
举例来说,预制物A中有个预制物B,然后预制物B上的RawImage引用图片C。ABC三个打到不同AssetBundle中。
首次打包,加载全部AssetBundle,实例化A,A显示正常。
修改图片C包名,再次打包,A所在包不会有变动。但是加载全部AssetBundle,实例化A,A会丢失C的引用。
反编译AssetBundle会发现,实际预制物A所在资源包数据中有图片C的引用数据,但是因为二次打包A包无变化,就没有更新C所在包的数据。
这个问题升级Unity是否可以解决?或者在当前版本是否可以避开?
反编译AssetBundle会发现A所在Bundle会直接以External References形式关联到图片C的地址,并且AssetBundle也会依赖到图片C所在Bundle(但是不依赖到嵌套Prefab B所在Bundle)。
Prefab B重新关联图片D再打包,A引用会正常刷新。但是仅仅修改图片C的BundleName再打包,不会触发A重新打包。
AssetBundle的Manifest显示的A和B依赖关系是不正确的,显示还是A依赖B,B依赖C,和实际解包出来的不一样。
现在已经用追踪Prefab嵌套树,外加资源BundleName监视的流程暂时解决了打包问题。但是还是希望能获得更规范的解决方案。
感谢郑骁@UWA问答社区提供了回答
AssetBundle
Q:如下图所示,在报告中常注意到资源管理模块中AB.LoadFromFile单次调用耗时较高(几十甚至几百毫秒),且不同AssetBundle包加载耗时差距较大,请问是什么原因导致的?
感谢Faust@UWA问答社区提供了回答
Shader
Q:如何在发布APK的时候,利用代码自动剔除掉Shader中某一些Pass?希望这些Pass在Editor环境下可以使用,而在APK包中关闭,这样可以减少变体构建时间。
感谢题主墙外行人@UWA问答社区提供了回答
封面图来源于网络
今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)