乐趣区

关于shader:AB打包有的Shader没有触发IPreprocessShaders的回调

1)AB 打包有的 Shader 没有触发 IPreprocessShaders 的回调
​2)场景中有多灯光导致粒子系统大量不合批
3)获取 Android 和 iOS 的设施惟一标识符
4)应用了 Variant 的 AB 包里的资源会判断为冗余


这是第 302 篇 UWA 技术常识分享的推送。明天咱们持续为大家精选了若干和开发、优化相干的问题,倡议浏览工夫 10 分钟,认真读完必有播种。

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

Shader

Q:在 Addressable 外面打包 AB,其中的 Shader 打包并没有触发 IPreprocessShaders 外面的回调,请问是什么起因?

A:增量打包时曾经打包的 Shader 不会触发该回调,只有新打包的 Shader 才会。不论是 Addressable 打包或者是其余的打包形式都相似。如果须要通过 IPreprocessShaders 来进行 Shader 变体剔除,那么还是倡议从新全量打包一次,或者打包时设置 ForceRebuild。

感激宗卉轩 @UWA 问答社区提供了答复

Rendering

Q:场景中有多灯光,导致了粒子系统大量的不合批,该如何优化?

A:测试了一下,在 2019.4.14 版本中,如果多灯光“影响”到了粒子系统,的确会导致本该合批的 ParticleSystem 不能合批,尽管自身渲染的时候不会对 ParticleSystem 产生理论影响。在 2020.3.17 和 2021.3.4 版本中都没有这个问题。对于不是 2020 及以上版本的 Unity,须要调整一下 Light 的 CullingMask,不让其对 ParticleSystem 所在的 Layer 产生影响,就能够合批了。比方粒子特效在 TransparentFX 层,光源的 CullingMask 不包含这一个 Layer 即可。

感激 Xuan@UWA 问答社区提供了答复

Android

Q:求教获取 Android 和 iOS 的设施惟一标识符的形式。

A1:Android 有获取 IMEI 的接口。如果 iOS 15 当前的设施设置不追踪,目前是无奈获取设施惟一 ID 的,得从其余相似热云插件的形式获取。

感激 Knight-132872@UWA 问答社区提供了答复

A2:Android 是应用 OAID 或者 UUID。iOS 应用 IDFA。刷机或者复原出厂设置都会刷新 ID,一些硬件档次的设施 ID,在 iOS 5.0 以上不被容许获取,Android 高版本中也不举荐应用。

感激不小人 @UWA 问答社区提供了答复

A3:补充楼上的计划,有上面两种形式:

  1. 原生条件下,Android 能够应用 UUID 的形式,iOS 应用楼上说的 IDFA,然而须要本人做兼容适配。
  2. 能够借助 SDK,获取 SDK 的 OpenID。这个是牢靠和稳固的,长处是不须要兼容平台,然而须要接入 SDK。

感激廖武兴 @UWA 问答社区提供了答复

AssetBundle

Q:应用 UWA AssetBundle 检测服务,发现一些应用了 Variant 的 AB 包里的资源会被断定为冗余,是 Bug 吗?

A:应用 Variant 形式打包的 AB 中,资源名字完全相同的资源会生成完全一致的 Guid,以实现它作为资源变体的性能,在加载的时候能够按需替换,而个别会认为 Guid 雷同的资源就是同一份资源,所以有可能是这个起因导致误判成冗余。能够改下资源名字或者不必 Variant 的形式打包试试。

感激宗卉轩 @UWA 问答社区提供了答复

封面图来源于网络


明天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题兴许都只是冰山一角,咱们早已在 UWA 问答网站上筹备了更多的技术话题等你一起来摸索和分享。欢送酷爱提高的你退出,兴许你的办法恰能解他人的当务之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官网技术博客:blog.uwa4d.com
官网问答社区:answer.uwa4d.com
UWA 学堂:edu.uwa4d.com
官网技术 QQ 群:793972859(原群已满员)

退出移动版