Spine动画打包成AssetBundle资源到安卓平台时,材质丢失。
网上的解决方案都是:
解决方法如下:
Edit——>Project Setting——>Graphics
在Always Included Shaders中 是Unity默认打包的材质球类型 ,将你所用到的材质球类型也添加进去,重新打包。就可以读取到了
补充:
有的自定义Shader材质,在加入了Graphics 中还是会在编辑器中显示粉色,但是查看物体发现材质和shader并没有丢失,是因为Andoird平台中在编辑器内会有显示错误,导出到手机上运行是正常的!
如果需要在编辑器中显示,可以手动在编辑器中的右边Inspector面板重新选择一下材质的shader。
void Start()
{
AssetBundle ab = AssetBundle.LoadFromFile("Assets/AssetBundles/kkk/jjj");
Material m = ab.LoadAsset<Material>("Doi_Material");
m.shader = Shader.Find("Spine/Skeleton");
gameObject.GetComponent<MeshRenderer>().material = m;
}
或者在代码中,读取AB包中的材质球,给材质球赋值shader,再将材质球赋值给物体。
注意:必须读取AB中的材质球,先赋值shader,再将材质球赋值给物体。否则不生效。直接读取物体的材质球,赋值shader也不生效。