using UnityEngine; namespace Core.UI.UTool.UITween { [System.Serializable] public class TweenCanvasGroup : TweenBasic { // public CanvasGroup CanvasGroup; public TweenLerpType TweenLerpType; public float StartAlpha; public float EndAlpha; public AnimationCurve startX=new AnimationCurve(); public CanvasGroup GetCanvasGroup(Object CanvasGroup) { CanvasGroup canvasGroup = CanvasGroup as CanvasGroup; if (canvasGroup == null) { GameObject gameObject = CanvasGroup as GameObject; if (gameObject != null) { canvasGroup = gameObject.GetComponent(); } } return canvasGroup; } protected override void ProPlay(Object CanvasGroup, float allTime) { CanvasGroup canvasGroup = GetCanvasGroup(CanvasGroup); if (canvasGroup == null) { return; } float t = _addTime * allTime; if (t > 1) { t = 1; } float v = 0; switch (TweenLerpType) { case TweenLerpType.Default: v = Mathf.Lerp(StartAlpha, EndAlpha, t); break; case TweenLerpType.Curve: v = startX.Evaluate(t); break; } canvasGroup.alpha = v; } protected override void ProRest(Object CanvasGroup) { CanvasGroup canvasGroup = GetCanvasGroup(CanvasGroup); if (canvasGroup == null) { return; } switch (TweenLerpType) { case TweenLerpType.Default: canvasGroup.alpha = StartAlpha; break; case TweenLerpType.Curve: canvasGroup.alpha = startX.Evaluate(0); break; } } } }