通过给SubShader设定一个整型Level Of Detail,即LOD数值,可以在运行时根据硬件设备能力来决定是否使用此Shader,以及使用哪一个层级的SubShader
一、新建一个设置LOD的测试脚本
using UnityEngine;
using System.Collections;
public class LOD_Test : MonoBehaviour {
public int LOD;
public MeshRenderer meshRenderer;
// Use this for initialization
void Start () {
meshRenderer.material.shader.maximumLOD = LOD;
}
}
二、新建一个Shader
Shader "Custom/Shader_LOD" {
Properties {
_Color ("Main Color", Color) = (1, 1, 1, 0.5)
_MainTex ("Base (RGB)", 2D) = "white" {}
}
SubShader {
LOD 600
Pass {
Material { Diffuse (0, 1, 0, 1) }
Lighting On
SetTexture [_MainTex] {Combine texture * primary double}
}
}
SubShader {
LOD 500
Pass {
Material { Diffuse (1, 1, 0, 1) }
Lighting On
}
}
SubShader {
LOD 400
Pass {
color(1, 0, 0, 1)
}
}
}
运行效果(shader.maximumLOD = 600)
运行效果(shader.maximumLOD = 500)
运行效果(shader.maximumLOD = 400)