在“Asset”中,创建一个新的Standard Surface Shader,在mono或者VS中打开,将原有的代码段全部删除
加入以下代码,每行代码具体功能如下所示
Shader "PACKT/Moon" //指定了该着色器在着色器选单中的名称
{
//着色器的属性区
Properties
{
_Color ("Color", Color) = (1,1,1,1)//设置着色器的RGBA属性
_MainTex("Albedo (RGB)",2D) = "white"{}//基础纹理贴图,2D指定该属性是一个二维贴图
}
//子着色器
SubShader
{
CGPROGRAM//标志着Cg代码的开始
#pragma surface surf Lambert//着色器编译指令,使用了Lambert光照模型
//定义了Cg代码块的输入数据有哪些内容
struct Input {
float2 uv_MainTex;
};
sampler2D _MainTex;
float4 _Color;
//着色器将纹理贴图的颜色值和单色颜色值相乘,并作为反光值输出
void surf(Input IN, inout SurfaceOutput o)
{
o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb*_Color.rgb;
}
ENDCG//标志着Cg代码的结束
}
}
新建一个Material,将其shader改为"PACKT/Moon"
便可以在Inspector面板中修改其color属性,修改其纹理贴图