首页 > Unity3D专栏 > 【Unity3D】动态加载模型丢失shader问题解决
2020
07-06

【Unity3D】动态加载模型丢失shader问题解决

最近遇到一个问题,将模型打包成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);
        }
    }

 



虚拟世界提醒您:如果您觉得本文不错,快快将这篇文章分享出去吧 ,感谢您的支持和关注,谢谢!
最后编辑:
作者:虚拟世界
专注互联网技术及资讯 技术研究中心|有相关Unity3D问题或者作事宜请联系我哦!
捐 赠如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝或者微信直接向我捐款,在此非常感谢您对虚拟世界的捐赠。

【Unity3D】动态加载模型丢失shader问题解决》有 1 条评论

  1. unity3d工程师 说:

    正好遇到这个问题。谢谢

留下一个回复

你的email不会被公开。