using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;
namespace UGUITweener
{
[ExecuteInEditMode]
public class TweenAlpha : TweenerSetting
{
private Graphic graphic;
[Range(0, 1)]
public float from = 1.0f;
[Range(0, 1)]
public float to = 1.0f;
public override void TweenPlay(bool value)
{
if (graphic)
{
float startValue = value ? from : to;
float endvalue = value ? to : from;
graphic.color = new Color(graphic.color.r, graphic.color.g, graphic.color.b, startValue);
Color endColor = new Color(graphic.color.r, graphic.color.g, graphic.color.b, endvalue);
tween = graphic.DOColor(endColor, duration).OnComplete(unityEvent.Invoke);
SetTweenData();
}
}
public override void SetStartToCurrentValue()
{
base.SetStartToCurrentValue();
graphic = (Graphic)GetComponent<Image>() ? (Graphic)GetComponent<Image>() : (Graphic)GetComponent<RawImage>();
from = graphic.color.a;
}
#if UNITY_EDITOR
[ContextMenu("设置 From")]
private void SetFromAlpha()
{
if (graphic)
{
from = graphic.color.a;
}
}
[ContextMenu("设置 Image Alpha")]
private void SetImageAlpha()
{
if (graphic)
{
graphic.color = new Color(graphic.color.r, graphic.color.g, graphic.color.b, from);
}
}
#endif
}
}