最近遇到一个问题,将模型打包成assetbundle,然后通过动态加载方法将模型显示出来的时候,shader会丢失(找不到)。
最后我通过对shader重新赋值解决了这个问题。
方法如下:
public void ShaderRecover(GameObject obj)
{
if (obj == null) return;
Renderer[] meshSkinRenderer = obj.GetComponentsInChildren<Renderer>(true);
for (int i = 0; i < meshSkinRenderer.Length; i++)
{
if (meshSkinRenderer[i].sharedMaterial == null)
{
continue;
}
SetShader(meshSkinRenderer[i]);
}
}
void SetShader(Renderer meshrenderer)
{
for (int j = 0; j < meshrenderer.materials.Length; j++)
{
meshrenderer.materials[j].shader = Shader.Find(meshrenderer.materials[j].shader.name);
}
}
- 本文固定链接: http://www.nihao6.cn/archives/479
- 转载请注明: 虚拟世界 于 Unity3D虚拟世界 发表
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝或者微信直接向我捐款,在此非常感谢您对虚拟世界的捐赠。
正好遇到这个问题。谢谢