项目需求需要给一张UGUI图片做逐渐显示又逐渐隐藏的循环效果。说白了就是Tween里的Pingpong。
但发现Itween对于Color的支持不包含Image和RawImage,研究了一通之后绝对放弃。所以选择了Dotween
代码如下:
void Pingpong(float fromValue, float toValue,float duration)
{
Color temColor = gameObject.GetComponent<Image>().color;
temColor.a = fromValue;
Tweener tweener = DOTween.ToAlpha(() => temColor, x => temColor = x, toValue, duration);
tweener.onUpdate = () => { gameObject.GetComponent<Image>().color = temColor; };
tweener.onComplete = () =>
{
Pingpong(toValue,fromValue, duration);
};
}
此处用到了递归,比如当第一次把透明度从1变到0之后,递归时把参数反转,即可实现pingpong的效果。这里改变的是color的透明度,当然可以循环改变颜色等值。