• 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;
            }
        }
  • 相关阅读:
    webStrom 注释模板添加
    匹配正则 url 端口 域名
    监测数据类型封装方法
    base64图片展示(后端给base64数据,前端展示图片)
    倒计时
    机密16位
    mvc与mvvm的区别
    flex表格的使用
    flex中tab页面的实现
    flex中下拉框的实现
  • 原文地址:https://www.cnblogs.com/unityzc/p/6801547.html
Copyright © 2020-2023  润新知