using UnityEngine; 
 | 
using System.Collections; 
 | 
  
 | 
//提供一个后处理的基类,主要功能在于直接通过Inspector面板拖入shader,生成shader对应的材质 
 | 
public class PostEffectBase : MonoBehaviour 
 | 
{ 
 | 
  
 | 
    //Inspector面板上直接拖入 
 | 
    public Shader shader = null; 
 | 
    private Material _material = null; 
 | 
    public Material _Material 
 | 
    { 
 | 
        get 
 | 
        { 
 | 
            if (_material == null) 
 | 
                _material = GenerateMaterial(shader); 
 | 
            return _material; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    //根据shader创建用于屏幕特效的材质 
 | 
    protected Material GenerateMaterial(Shader shader) 
 | 
    { 
 | 
        if (shader == null) 
 | 
            return null; 
 | 
        //需要判断shader是否支持 
 | 
        if (shader.isSupported == false) 
 | 
            return null; 
 | 
        Material material = new Material(shader); 
 | 
        material.hideFlags = HideFlags.DontSave; 
 | 
        if (material) 
 | 
            return material; 
 | 
        return null; 
 | 
    } 
 | 
  
 | 
} 
 |