/// <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); }
/// <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; } }