using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HeightCOlor : MonoBehaviour
{
public Gradient coloring;
public SkinnedMeshRenderer meshRenderer;
public float top = 10;
public float buttom = 0;
void OnEnable()
{
Mesh mesh= meshRenderer.sharedMesh;
Vector3[] v3= mesh.vertices;
List<Color> lc = new List<Color>();
for (int i = 0; i < v3.Length; i++)
{
Color c= coloring.Evaluate(v3[i].y / (top - buttom));
Debug.Log(c);
lc.Add(new Color(c.r, c.g, c.b));
}
mesh.colors = lc.ToArray();
}
}
c#脚本↑
Shader "Custom/Surface Shader" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
half4 color : COLOR;
};
void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D (_MainTex, IN.uv_MainTex);
// 叠加色
//o.Albedo = c.rgb * IN.color.rgb;
//o.Alpha = c.a * IN.color.a;
//纯色
o.Albedo = IN.color.rgb;
o.Alpha = IN.color.a;
}
ENDCG
}
FallBack "Diffuse"
}
surface shader脚本↑