Properties语义块包含了一系列属性(property),这些属性将会出现在材质面板中。
Properties属性
属性定义:
Properties{
_Color("ColorInspector",Color) = (1,1,1,1)
}
变量名:_Color
Inspector的面板上显示名称:ColorInspector
类型:Color
默认值:(1,1,1,1)
属性类型
有如下几种
Properties{
_Color("Color",Color) = (1,1,1,1)//颜色
_Vector("Vector",Vector) = (3,2,3,1)//向量
_Int("Int",Int) = 234//int类型
_Float("Float",Float) = 1.2
_Range("Range",Range(2,8)) = 6//范围值
_2D("Texture",2D) = "red"{}//贴图
_Cube("Cube",Cube) = "white"{}//天空盒
_3D("Texure",3D) = "black"{}//3D贴图
}
Color:颜色
颜色属性是个四维分量,也就是由四个数值来组成的,每个数值代表着颜色的一个通道。四个数值依次为RGBA(红,绿,蓝,透明)。
RGB的取值是0-255(2的8次方个值域),在Shader中范围变为0-1,例如(1,1,1,1)显示为白色。
Properties{
_Color("Color",Color) = (1,1,1,1)//颜色
}
Vector:向量
Properties{
_Vector("Vector",Vector) = (3,2,3,1)
}
整型Int
Properties{
_Int("Int",Int) = 234//int类型
}
浮点数Float
Properties{
_Float("Float",Float) = 3.14
}
Range范围
Properties{
_Range("Range",Range(2,8)) = 6//范围值
}
可拖动滑动条滑动
2D纹理
Properties{
_MainTex("Main Tex",2D) = "white"{}//纹理贴图
}
默认值
2D纹理的默认值有以下几种:white、black、gray或者bump
如果不设置默认值,即=""{},则其实与="gray"{}相同;法线贴图设置为bump,意思是如果未使用法线贴图,则使用物体默认自带的法线。
Properties{
_MainTex("Main Tex",2D) = "bump"{}//法线贴图
}
Shader内部会自动调用Unity内部准备的一张小图片,white就是纯白色,black就是纯黑色,gray就是灰色图,bump就是法线图。
Cube, 立方体纹理
Properties{
_Cube("Cube",Cube) = "white"{}//天空盒
}
3D, 3D贴图
Properties{
_3D("Texure",3D) = "black"{}//3D贴图
}
完整代码
custome/01 shader"{
Properties{
_Color("Color",Color) = (1,1,1,1)//颜色
_Vector("Vector",Vector) = (3,2,3,1)//向量
_Int("Int",Int) = 234//int类型
_Float("Float",Float) = 1.2
_Range("Range",Range(2,8)) = 6//范围值
_2D("Texture",2D) = "red"{}//贴图
_Cube("Cube",Cube) = "white"{}//天空盒
_3D("Texure",3D) = "black"{}//3D贴图
}
SubShader{
Pass{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
float4 vert(float4 v:POSITION):SV_POSITION{
return UnityObjectToClipPos(v);//模型空间转为裁剪空间
}
fixed4 frag():SV_Target{
return fixed4 (1,1,1,1);
}
ENDCG
}
}
FallBack "Diffuse"
}