zoukankan      html  css  js  c++  java
  • 解决AssetBundle包加载预制体时,Shader显示异常的问题

    现象: 预制体上的粒子效果显示为紫色方块。

    原因:shader在打成AB包后与指定平台产生相关性,Editor中无法正常读取。

    解决办法:

      遍历所有加载的对象,重新赋值Shader

    代码:

            //修正shader不正确的问题
            public void ShaderRecover(GameObject obj)
            {
                if (obj == null) return;
    
                Image[] images = obj.GetComponentsInChildren<Image>(true);
                for (int j = 0; j < images.Length; j++)
                {
                    images[j].material.shader = Shader.Find(images[j].material.shader.name);
                }
    
                Renderer[] meshSkinRenderer = obj.GetComponentsInChildren<Renderer>(true);
                for (int i = 0; i < meshSkinRenderer.Length; i++)
                {   if (meshSkinRenderer[i].sharedMaterial == null)
                    {
                        continue;
                    }
                    meshSkinRenderer[i].sharedMaterial.shader = Shader.Find(meshSkinRenderer[i].sharedMaterial.shader.name);
                }
            }
  • 相关阅读:
    Smart Client智能客户端技术
    SaaS介绍
    SaaS介绍
    开源软件介绍
    SaaS介绍
    SaaS介绍
    开源软件介绍
    开源软件介绍
    GPUCUDA安装
    Linux 下的段错误(Segmentation fault)调试方法
  • 原文地址:https://www.cnblogs.com/imteach/p/10262493.html
Copyright © 2011-2022 走看看