两种方式:
本质都是 根据时间修改图片透明度 达到动态显示或掩藏图片的效果
1、监测图片透明度,根据图片透明度值来显示或掩藏图片;
2、监测时间,根据时间长短来显示或掩藏图片;
可根据项目需求进行选择和细节修改。
方法1:
固定速度修改图片透明度,
当透明度小于一定值后,直接掩藏图片(透明度置0),开始逐步显示图片(透明度+);
当透明度大于一定值后,直接显示图片(透明度置1),开始逐步掩藏图片(透明度-);
using UnityEngine;
using UnityEngine.UI;public class Shine : MonoBehaviour
{public Image img; //目标图片public float speed = 5; //透明度修改速度private bool isShow; //图片要显示或要掩藏void Update(){if (isShow){img.color += new Color(0, 0, 0, Time.deltaTime * speed);if (img.color.a >= 0.8f) isShow = false;}else{img.color -= new Color(0, 0, 0, Time.deltaTime * speed);if (img.color.a <= 0.2f) isShow = true;}}
}
方法2:
固定速度修改图片透明度,同时计时。
当掩藏时长大于一定值后,直接掩藏图片(透明度置0),开始逐步显示图片(透明度+);
当显示时长大于一定值后,直接显示图片(透明度置1),开始逐步掩藏图片(透明度-);
using UnityEngine;
using UnityEngine.UI;public class Shine : MonoBehaviour
{public Image img;public float speed = 5;private bool isShow = false;private float timer = 0; //计时器,记录已经显示/掩藏多久public float timePiece = 3; //时间片,计时器大于该时间,切换图片的显示与掩藏状态void Update(){timer += Time.deltaTime;if (isShow){img.color += new Color(0, 0, 0, Time.deltaTime * speed);if (timer > timePiece){img.color = new Color(img.color.r, img.color.g, img.color.b, 1);isShow = false;timer = 0;}}else{img.color -= new Color(0, 0, 0, Time.deltaTime * speed);if (timer > timePiece){img.color = new Color(img.color.r, img.color.g, img.color.b, 0);isShow = true;timer = 0;}}}
}