1、新建Plane,重命名为WaterWave,移除本身自带的Collide组件,并调节其位置信息、大小信息使其在Canvas前显示在摄像机内;
2、新建材质球material,更改材质球的 Shader 属性 -- Particles -- Additive,此模式下采用“黑透白不透”原理(即纹理图的黑色区域透明显示,白色区域不透明显示),将材质球赋予WaterWave;
3、使用脚本来更改对象材质球的纹理贴图:
public class Ef_WaterWave : MonoBehaviour {
public Texture[] textures; //创建一个数组,用于保存水波纹的纹理图
private Material material; //获取当前对象的材质球
private int index = 0; //获取当前对象的材质纹理
void Start () {
material = GetComponent<MeshRenderer>().material; //获取当前对象的材质球
InvokeRepeating("ChangeTexture", 0, 0.1f); //0S后以0.1f的间隔重复执行函数ChangeTexture()
}
void ChangeTexture () {
material.mainTexture = textures[index]; //更改当前对象材质球的纹理图
index = (index + 1) % textures.Length;
}
}
将脚本赋予WaterWave,并将准备好的材质纹理图集赋予脚本中的Texture;
【tip】延时函数
(1)InvokeRepeating(methodName:
string
, time:
float
, repeatRate:
float
):
void
;
methodName:方法名
time:多少秒后执行
repeatRate:重复执行间隔
(2)Invoke(methodName:
string
, time:
float
):
void
;
methodName:方法名
time:多少秒后执行
(3)IsInvoking():用来判断某方法是否被延时,即将执行
(4)CancelInvoke():取消该脚本上的所有延时方法
Unity3D练习 -- 捕鱼达人(2) -- 水波纹效果 -- 多张纹理图连续播放
原文:https://www.cnblogs.com/jiahao123/p/12943326.html