- 在Unity中使用DOTweenPath组件测试的,代码如下:
using UnityEngine;
using DG.Tweening;
public class DOTweenTest : MonoBehaviour
{
//Tweener 继承 Tween
Tween m_Tweener;
// Start is called before the first frame update
void Start()
{
//m_Tweener = transform.DOLocalMove(new Vector3(0, 0, 0), .2f)
// .SetAutoKill(false);
m_Tweener = GetComponent<DOTweenPath>().GetTween();
m_Tweener.OnStart(OnStart);
m_Tweener.OnPlay(OnPlay);
m_Tweener.OnUpdate(OnUpdate);
m_Tweener.OnStepComplete(OnStepComplete);
m_Tweener.OnComplete(OnComplete);
m_Tweener.OnPause(OnPause);
m_Tweener.OnRewind(OnRewind);
m_Tweener.OnKill(OnKill);
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Q))
{
Debug.Log("KeyDown Q");
//m_Tweener.ChangeStartValue(transform.position + new Vector3(0, 2, 0), .2f);
}
else if (Input.GetKeyDown(KeyCode.Y))
{
Debug.Log("KeyDown Y DOPlay");//第一次播放。注意:调用DORewind()后回到起始点,算第一次播放
transform.DOPlay();
}
else if (Input.GetKeyDown(KeyCode.U))
{
Debug.Log("KeyDown U DORestart");//重新开始播放
transform.DORestart();
}
else if (Input.GetKeyDown(KeyCode.I))
{
Debug.Log("KeyDown I DORewind");//直接回到起始点
transform.DORewind();
}
else if (Input.GetKeyDown(KeyCode.O))
{
Debug.Log("KeyDown O DOPlayBackwards");//在动画正在播放时 或 动画播放完成后 点击生效
transform.DOPlayBackwards();
}
else if (Input.GetKeyDown(KeyCode.P))
{
Debug.Log("KeyDown P DOFlip");//在动画正在播放时 点击生效
transform.DOFlip();
}
}
//创建的时候回调,先于OnStart(只能在组件上绑定事件)
public void OnCreated()
{
Debug.Log("Tween OnCreated");
}
//只在第一次播放动画时回调,在play之前调用
void OnStart()
{
Debug.Log("Tween OnStart");
}
//动画播放时回调,重新播放也会调用
void OnPlay()
{
Debug.Log("Tween OnPlay");
}
//帧回调
void OnUpdate()
{
Debug.Log("Tween OnUpdate");
}
//完成单个循环周期时回调
void OnStepComplete()
{
Debug.Log("Tween OnStepComplete");
}
//整个动画完成时回调
void OnComplete()
{
Debug.Log("Tween OnComplete");
}
//动画暂停时回调
void OnPause()
{
Debug.Log("Tween OnPause");
}
//动画回退到起点时回调(如果已经在起点,以下情况都不会触发)
//1. DOTweenVisualManager中OnDisable设置为Rewind,物体禁用或者该组件禁用时调用
//2. DOTweenVisualManager中OnEnable设置为Restart From Spawn Point,动画播放时
//3. transform.DORestart();重新播放时触发
//4. transform.DORewind();调用时触发
//5. transform.DOPlayBackwards();反向播放动画完成时触发
//6. transform.DOFlip();翻转动画完成时触发
void OnRewind()
{
Debug.Log("Tween OnRewind");
}
//动画被杀死时回调
void OnKill()
{
Debug.Log("Tween OnKill");
}
}
参考博客:Dotween常用方法详解
(这位大佬的博客写得很详细,在此特意感谢!需要了解更详细的,可查阅此博客)