1)AssetBundle依赖打包有哪些注意点
2)子程序集如何引用Assembly-CSharp.dll
3)Unity的线性空间下自定义贴图在PS中修改问题
4)如何关闭视锥体剔除
这是第318篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。
UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)
AssetBundle
Q:AssetBundle依赖打包的注意点有哪些?
A:主要有以下几点:
- 运行时,AssetBundle驻留控制在40MB以内、数量在1000个以内;
- 使用LZ4压缩+LoadFromFile加载;
- 结合项目情况根据依赖树制定打包策略,如公共资源单独打AssetBundle、按使用场景和功能类型分包、独立资源打到一起、Shader/字体等(较为细碎、内存不高、高频使用、最好常驻的)资源打包到一起,启动游戏的时候常驻内存;
- 结合热更新需求打包;
- 依赖打包,追求0冗余;
- 粒度具体没有定值,近期经验上来看会需要尤其警惕AssetBundle包体超过10MB的。
另外,建议使用UWA的在线AssetBundle检测服务快速定位冗余资源。
感谢小ben@UWA问答社区提供了回答
Scripting
Q:如下图,新建程序集,找不到Assembly-CSharp主工程的程序集,请问有其他方法?
A:应该和Unity的脚本编译顺序有关,Assembly-CSharp.dll和Assembly-CSharp.Editor.dll是在最后,所以子程序集没法引用到。
感谢罗中杰@UWA问答社区提供了回答
Rendering
Q:我遇到了一个问题,在Unity的线性空间下,当我把一张数据贴图(黑白渐变图片)和一张数值为“808080”的灰度图在PS中用GAMA空间和线性空间分别导出为png格式的两张图片时(Unity中没有勾选sRGB选项),我发现这两张图片在Shader中的效果是一样的。但是我用电脑自带的图片查看器看两张图效果是不一样的,是Unity在对图片进行了什么设置呢?
是不是意味着我在Substance Painter输出的Roughness和Metallic(在一张图片的两个通道)可以在PS中修改而不用修改PS为线性空间,最后只要在Unity中把sRGB关掉就可以呢?
或者,我是不是可以理解为Unity在线性空间下,无论线性空间的贴图还是GAMA空间的贴图在不勾选sRGB时,Unity都会识别为线性空间的贴图,在勾选了sRGB时会识别为GAMA空间?
但是Unity是如何让一张GAMA图片和一张线性图片在不勾选sRGB的情况下保持一致的呢?
以上问题有哪位大拿也曾经做过类似的测试,可以来分享一下
Rendering
Q:Unity默认是开启的,但是我们项目类型不需要剔除,想着把它关了省些CPU,请问如何关闭?
我在UWA学堂中看到一篇文章,是说在CPU做的剔除。
A:我这两天学URP,发现URP是可以关闭CPU裁剪的,具体是调用了ScriptableRenderContext的Cull方法,这个可以通过修改URP源码实现。
感谢纪检全@UWA问答社区提供了回答
封面图来源于网络
今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。
官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)