| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 | 
							- using System;
 
- using Fort23.Core;
 
- using UnityEngine;
 
- using Utility.CTween;
 
- public class CustomFloatTween : CustomTweener
 
- {
 
-     public CustomGetter<float> Getter;
 
-     public CustomSetter<float> Setter;
 
-     public float EndValue;
 
-     public float StartValue;
 
-     public float CurValue;
 
-     private GameObject _target;
 
-     public CustomFloatTween CustomInit(CustomGetter<float> getter, CustomSetter<float> setter, float endValue, float duration, GameObject target)
 
-     {
 
-         _target = target;
 
-         _tempTimer = 0;
 
-         _curTime = 0;
 
-         Duration = 0;
 
-         _isPause = false;
 
-         _isKilled = false;
 
-         _isComplete = false;
 
-         Duration = duration;
 
-         Getter = getter;
 
-         Setter = setter;
 
-         EndValue = endValue;
 
-         StartValue = Getter();
 
-         Update();
 
-         return this;
 
-     }
 
-     public override void Update()
 
-     {
 
-         if (_target == null)
 
-         {
 
-             Kill();
 
-             return;
 
-         }
 
-         if (_isPause || _isKilled || _isComplete)
 
-         {
 
-             return;
 
-         }
 
-         _isPlaying = true;
 
-         _curTime += Time.deltaTime;
 
-         float rate = 1 / Duration; //相对速率
 
-         _tempTimer += Time.deltaTime * rate;
 
-         _tempTimer = Mathf.Clamp(_tempTimer, 0, 1);
 
-         float v = AnimationCurve.Evaluate(_tempTimer);
 
-         float pNewValue = Mathf.Lerp(StartValue, EndValue, v);
 
-         CurValue = pNewValue;
 
-         Setter?.Invoke(pNewValue);
 
-         OnUpdateAction?.Invoke();
 
-         OnUpdateAndValueAction?.Invoke(pNewValue);
 
-         if (_curTime >= Duration)
 
-         {
 
-             OnCompleteAction?.Invoke();
 
-             _isPlaying = false;
 
-             _isComplete = true;
 
-             if (AutoDispose)
 
-             {
 
-                 Kill();
 
-             }
 
-         }
 
-     }
 
-     public void ReStart(float endValue = -1, float duration = -1)
 
-     {
 
-         _tempTimer = 0;
 
-         _curTime = 0;
 
-         // Duration = 0;
 
-         _isPause = false;
 
-         _isKilled = false;
 
-         _isComplete = false;
 
-         if (Math.Abs(endValue - (-1)) > 0.001f)
 
-         {
 
-             EndValue = endValue;
 
-         }
 
-         if (Math.Abs(duration - (-1)) > 0.001f)
 
-         {
 
-             Duration = duration;
 
-         }
 
-         CustomInit(Getter, Setter, EndValue, Duration, _target);
 
-     }
 
-     public override void Dispose()
 
-     {
 
-         if (_target != null)
 
-         {
 
-             Setter?.Invoke(EndValue);
 
-             OnCompleteAction?.Invoke();
 
-         }
 
-         base.Dispose();
 
-         _target = null;
 
-         Getter = null;
 
-         Setter = null;
 
-         CustomTweenManager.FloatRecycle(this);
 
-     }
 
- }
 
 
  |