我有两张图片:一张带有发光边框,另一张没有。我想通过淡入淡出发光图像来创建图像发光的效果。我的代码:
private Image lightImage;
private float alpha;
// Use this for initialization
void Start ()
{
lightImage = GetComponent<Image>();
alpha = Time.deltaTime * 10;
}
void FixedUpdate()
{
// fade to transparent over 500ms.
lightImage.CrossFadeAlpha(0.0f, alpha, false);
// and back over 500ms.
lightImage.CrossFadeAlpha(1.0f, alpha, false);
}
我似乎无法让它像我想的那样工作(随着时间的推移缓慢转变。)它快速闪烁,但这不是理想的效果。
答案 0 :(得分:1)
alpha = Time.deltaTime * 10;
alpha = 0.5f;
我
认为您应该将alpha
变量重命名为duration
。CrossFadeAlpha
放入FixedUpdate()
。它是
一个补间。它不需要跨多个帧执行。
只需将其放入Start()
。alpha
设置为绝对0不是一个好主意,因为有时,
Unity将0个alpha对象视为已禁用,但我不是
当然。如果您遇到此问题,请将alpha设置为非常值
关闭为0(例如0.004f
)。如果你希望它淡出然后淡入,你应该这样做 像这样:
IEnumerator Fade() {
// fade to transparent over 500ms.
lightImage.CrossFadeAlpha(0.004f, 0.5f, false);
// Wait for 500ms
yield return new WaitForSeconds(0.5f);
// and back over 500ms.
lightImage.CrossFadeAlpha(1.0f, 0.5f, false);
}
void Start() {
StartCoroutine(Fade());
}