using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DT : MonoBehaviour
{
float a, b;
float timer;
Action<float> action;
Action Complete;
float now;
bool isPlay = true;
void Update()
{
if (Time.time - now < timer)
{
float p=(Time.time - now)/timer;
float c = a * (1 - p) + b * p;
if (action != null)
{
action(c);
}
}
else if(isPlay)
{
isPlay= false;
if(action!=null)
{
action(b);
}
else
{
Complete();
}
Destroy(gameObject);
}
}
/// <summary>
/// OnComplete回调
/// </summary>
/// <param name="complete"></param>
public void OnComplete(Action complete)
{
this.Complete = complete;
}
/// <summary>
/// To方法
/// </summary>
/// <param name="action"></param>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="time"></param>
/// <returns></returns>
public static DT To(Action<float> action,float a,float b,float time)
{
GameObject obj = new GameObject("DT");
DT dt=obj.AddComponent<DT>();
dt.a= a; dt.b = b;
dt.timer= time;
dt.action = action;
dt.now= Time.time;
return dt;
}
}
这里是封装了DOTween中的To方法,其他方法可以参考此代码封装