1)Spine 合批问题
2)使用 HDR 模式渲染 RenderTexture 产生的问题
3)Inspector 的图片预览窗口异常
4)关于 Unity 2019 打包疑问
UWA 问答社区:answer.uwa4d.com
UWA QQ 群 2:793972859(原群已满员)
Q:这里用 Unity 导入了一个 Spine 文件,该 Spine 有两张贴图,在 Unity 中也生成了两个对应的材质。现在有个问题是这个 Spine 的 DrawCall 很高,检查后发现是这两个材质在一直切换,也无法合批。请问这种 Spine 有什么办法合批来减少 DrawCall 吗?
Spine 的版本是 3.6,Unity 的版本是 2017.4,如下图所示,该 Spine 的 DrawCall 是 55。
A:请参考官方说明。
如果可以合并图集,还是用一个图集比较好,我们现在也是这样用的。但是如果导出的图集利用率不高或者实在太大,则考虑使用 PropertyBlock。毕竟要增加一些代码控制。
感谢黄程@UWA问答社区提供了回答
Q:使用 RenderTexture 渲染模型(带特效)到 UI 上的时候,如果 Camera 开了 HDR,在 HDR Mode 的格式为 FP16 时,没有出现问题,Alpha 通道是有值的,但在使用 R11G11B10 格式时(Unity 在中低端机上的推荐),Alpha 通道就全是 1,这样就无法知道哪块是透明的。现在项目只能在手机上判断如果当前 Camera.HDRMode 是 R11G11B10 格式时,关闭这种 Camera 的 HDR,但是特效跟模型都会差很多,想问一下大家有没有遇到过这个问题?
PS:场景上的 Camera 使用哪种 HDR Mode 关系并不大,只是效果的区别而已,但是在 UI 上是直接没有透明通道。
另外我在安卓机上直接用 FP16 也无法正常渲染透明通道,iOS 上确是正常的。所以安卓上是不支持 FP16 吗?
A1:FP16 模式是 ARGBHalf,每个通道 16bit,带 Alpha 通道。R11G11B10 模式就没有 Alpha 通道,一个像素 32bit,R11bit,G11bit,B10bit。
感谢黄程@UWA问答社区提供了回答A2:我在小米 9 和 OPPO K1 上均测试过,FP16 模式的 HDR 是可以渲染出 Alpha 通道的。
上面的截图是一个简单的测试场景,渲染 RenderTexture 的相机背景使用 SolidColor,普通相机背景是天空盒,场景中有一个透明的 Sphere,球背后有一个 Cube。
RenderTexture 相机显示透明通道的渲染效果渲染 RenderTexture 的相机将 Sphere 和 Cube 渲染到 1024x1024 的 ARGB32 格式的 RenderTexture 中,生成的渲染的 Temp RenderTexture(FP16 格式)和我创建的 New RenderTexture(R8G8B8A8 格式)都保留了透明通道。
单独的透明通道图然后再将这个 New RenderTexture(R8G8B8A8 格式)作为 RawImage 的 Texture,可以看到是可以透过这个 RawImage 看到另外一个相机的天空盒背景的。
感谢 Xuan@UWA 问答社区提供了回答
Q:如图所示,想知道右上角那部分是怎么出现的?我看不到开发中的那个工程,但是新建一个项目图片是能看到的。
A:我曾经遇到过一个类似的问题,是由于 Substance 的插件放错了目录造成预览窗口很多控件无法显示。可以考虑查看是否有什么插件造成影响,或者是 meta 文件有什么问题,造成保存的各种属性读取错误。
感谢黄程@UWA问答社区提供了回答
Q:下图一张是 Unity 2018 的 Build Setting,一张是 2019.3.0f6 的。想请问一下 Unity 2019 打包中的 Gradle 设置为什么不见了?
A:2019.3 全部使用 Gradle 打包。点击 Build 直接导出 APK,勾选 “Export Project” 则能够导出使用 Gradle 的 Android Studio 工程。
感谢黄程@UWA问答社区提供了回答
今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在 UWA 问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之 “石”,也能攻你之 “玉”。