using UnityEngine; 
 | 
using UnityStandardAssets.ImageEffects; 
 | 
  
 | 
public class WaterWaveOnUI : PostEffectBase 
 | 
{ 
 | 
    //距离系数 
 | 
    public float distanceFactor = 60.0f; 
 | 
    //时间系数 
 | 
    public float timeFactor = -30.0f; 
 | 
    //sin函数结果系数 
 | 
    public float totalFactor = 1.0f; 
 | 
  
 | 
    //波纹宽度 
 | 
    public float waveWidth = 0.3f; 
 | 
    //波纹扩散的速度 
 | 
    public float waveSpeed = 0.3f; 
 | 
  
 | 
    private float waveStartTime; 
 | 
  
 | 
    public void StartWave() 
 | 
    { 
 | 
        enabled = true; 
 | 
        //设置startTime 
 | 
        waveStartTime = Time.time; 
 | 
    } 
 | 
  
 | 
    void OnRenderImage(RenderTexture source, RenderTexture destination) 
 | 
    { 
 | 
        if (Time.time - waveStartTime > 1) 
 | 
        { 
 | 
            //如果时间超过1s,关闭波纹效果 
 | 
            enabled = false; 
 | 
            return; 
 | 
        } 
 | 
        //计算波纹移动的距离,根据enable到目前的时间*速度求解 
 | 
        float curWaveDistance = (Time.time - waveStartTime) * waveSpeed; 
 | 
        //设置一系列参数 
 | 
        _Material.SetFloat("_distanceFactor", distanceFactor); 
 | 
        _Material.SetFloat("_timeFactor", timeFactor); 
 | 
        _Material.SetFloat("_totalFactor", totalFactor); 
 | 
        _Material.SetFloat("_waveWidth", waveWidth); 
 | 
        _Material.SetFloat("_curWaveDis", curWaveDistance); 
 | 
  
 | 
        Graphics.Blit(source, destination, _Material); 
 | 
    } 
 | 
  
 | 
} 
 |