在进行屏幕后处理之前,需要检查一系列条件是否满足,比如是否支持渲染纹理和屏幕特效,是否支持当前使用的Unity shader等.所以需要创建一个基类,用来检查:
屏幕后处理基类
using UnityEngine;
[ExecuteInEditMode]//ExecuteInEditMode属性的作用是在EditMode下也可以执行脚本
[RequireComponent (typeof(Camera))]//所有屏幕后处理效果都需要绑定在某个摄像机上
public class PostEffectsBase : MonoBehaviour
{
protected void CheckResources()
{
bool isSupported = CheckSupport();
if (isSupported == false)
{
NotSupported();
}
}
protected bool CheckSupport()//检查各种资源和条件是否满足
{
if (SystemInfo.supportsImageEffects == false )
{
Debug.LogWarning("This platform does not support image effects or render textures.");
return false;
}
return true;
}
protected void NotSupported()//不支持就禁用
{
enabled = false;
}
protected void Start()
{
CheckResources();
}
protected Material CheckShaderAndCreateMaterial(Shader shader, Material material)
{
if (shader == null)
{
return null;
}
if (shader.isSupported && material && material.shader == shader)
return material;
if (!shader.isSupported)
{
return null;
}