引用了两篇文章:
[Unity] WebGL 加载 Addressable 包得到的示例中 Sprite Renderer 材质纹理丢失,但是在监视器中更换其材质后又能找到主纹理 - 掘金 (juejin.cn)
在此的14#找到了解决方法:
Loading assets from assetbundles makes assets appear pink in editor. - Unity Forum
这是一个很老的问题了,看unity论坛那边的讨论貌似是2015年就有的问题,我在用unity开发WebGL平台时使用addressables热更新依旧遇到了这个问题,并且使用原先论坛中的#14提供的解决方案解决
可以确定的是,即使成功加载了相应的所有资源依旧不免遇到这个问题
解决方案
将遇到问题的游戏物体上的负责渲染的组件的shader重新赋值即可,将shader的名字作为key值在Shader.Find中获取,以2D游戏举例(SpriteRenderer)具体如下
SpriteRenderer sprite = gameObject.GetComponent<SpriteRenderer>();
sprite.material.shader = Shader.Find(sprite.material.shader.name);