zoukankan      html  css  js  c++  java
  • unity给子物体添加Shader

    分享两个自制Shader:http://pan.baidu.com/s/1nuRcF2L

    Shader存放路径:AssetsResourcesShader

    定义Shader类型:

    public enum EnumFbxType
    {
        Default,
        TouMing,
        GaoLiang,
    }

    加载指定Shader:

        private static Shader myTouMing = Shader.Find("My/TouMing");
        private static Shader myDiffuse = Shader.Find("My/Diffuse");

    设置物体的Shader:

    /// <summary>
        /// 设置模型材质
        /// </summary>
        /// <param name="_obj">模型</param>
        /// <param name="_fbxType">材质类型</param>
        public static void SetObjFbxShader(GameObject _obj, EnumFbxType _fbxType)
        {
            if (_obj == null) return;
            Renderer r = _obj.GetComponent<Renderer>();
            if (r == null) return;
            Material[] mater = r.materials;
            switch (_fbxType)
            {
                case EnumFbxType.Default:
                    foreach (Material m in mater)
                    {
                        if (m.color.a == 1 || m.color.a == 0.123f)
                        {
                            m.shader = myDiffuse;
                            m.SetFloat("_Glossiness", 0.3f);
                            m.SetFloat("_Metallic", 0);
                            m.SetColor("_Emission", Color.black);
                        }
                        else
                        {
                            m.shader = myTouMing;
                            m.SetColor("_Emission", Color.black);
                        }
                    }
                    break;
                case EnumFbxType.TouMing:
                    foreach (Material m in mater)
                    {
                        m.shader = myTouMing;
                        m.SetColor("_Emission", Color.black);
                        if (m.color.a == 1)
                        {
                            Color color = m.color;
                            color.a = 0.123f;
                            m.color = color;
                        }
                    }
                    break;
                case EnumFbxType.GaoLiang:
                    foreach (Material m in mater)
                    {
                        m.shader = myDiffuse;
                        m.SetFloat("_Glossiness", 1);
                        m.SetFloat("_Metallic", 0.2f);
                        m.SetColor("_Emission", Color.red);
                    }
                    break;
            }
        }
  • 相关阅读:
    Linux-命令-seq
    怎样打开U盘最安全
    SQL Anywhere .NET
    技巧:低版本VS打开高版本VS创建的工程
    数据库插入数据返回当前主键ID值方法
    Nvelocity模板引擎
    .ashx文件与.ashx.cs
    该站点安全证书的吊销信息不可用。是否继续?
    IE8“开发人员工具”(下)
    IE8“开发人员工具”(上)
  • 原文地址:https://www.cnblogs.com/unityzc/p/6801547.html
Copyright © 2011-2022 走看看