0

AB打包有的Shader没有触发IPreprocessShaders的回调

 2 years ago
source link: https://blog.uwa4d.com/archives/TechSharing_302.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
AB打包有的Shader没有触发IPreprocessShaders的回调

AB打包有的Shader没有触发IPreprocessShaders的回调

  • 作者:admin
  • 时间:10小时前
  • 浏览:39 次
  • 分类:厚积薄发

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问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/62a94973898b3a7fa6177bd5


Rendering

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

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

1.png

感谢Xuan@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/62b045949b935a01f583ca0b


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问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/629f46efb87a4573517194bb


AssetBundle

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

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

感谢宗卉轩@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/62b0273a9b935a01f583a8aa

封面图来源于网络


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK