Example #1
0
        /// <summary>
        /// 获取某个材质球上Shader中某个属性字段的值
        /// </summary>
        /// <param name="matTarget"></param>
        /// <param name="propertyName">属性字段名</param>
        /// <param name="propertyType">属性字段的类型</param>
        /// <returns></returns>
        public object GetPropertyValue(Material matTarget, string propertyName, ShaderPropertyEnum propertyType)
        {
            if (matTarget == null)
            {
                return(null);
            }

            switch (propertyType)
            {
            case ShaderPropertyEnum.Float:
            case ShaderPropertyEnum.Range:
                return(matTarget.GetFloat(propertyName));

            case ShaderPropertyEnum.Color:
                return(matTarget.GetColor(propertyName));

            case ShaderPropertyEnum.TexEnv:
                return(null);

            case ShaderPropertyEnum.Vector:
                return(matTarget.GetFloatArray(propertyName));

            default:
                break;
            }

            return(null);
        }
Example #2
0
        /// <summary>
        /// 设置 某个材质球上Shader中某个属性字段的值
        /// </summary>
        /// <param name="matTarget"></param>
        /// <param name="propertyName">属性字段名</param>
        /// <param name="propertyValue">要设置属性字段值</param>
        /// <param name="propertyType">属性字段的类型</param>
        public void SetPropertyValue(Material matTarget, string propertyName, object propertyValue, ShaderPropertyEnum propertyType)
        {
            if (matTarget == null)
            {
                return;
            }

            switch (propertyType)
            {
            case ShaderPropertyEnum.Float:
            case ShaderPropertyEnum.Range:
                matTarget.SetFloat(propertyName, (float)propertyValue);
                break;

            case ShaderPropertyEnum.Color:
                matTarget.SetColor(propertyName, (Color)propertyValue);
                break;

            case ShaderPropertyEnum.TexEnv:
                break;

            case ShaderPropertyEnum.Vector:
                matTarget.SetFloatArray(propertyName, (float[])propertyValue);
                break;

            default:
                break;
            }
        }