| 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); | 
|     } | 
|   | 
| } |