术语
Tweener 控制值并对值进行动画
Sequence 特殊的Tweener控制其他的Tweens,并将它们作为一个组进行动画。
Tween 既表示一个Tweener,也表示一个Sequence。
Nested Tween 包含在Sequence中的嵌套tween
准备工作
"Tools/Demigiant" menu打开Dotween Utility Panel,点击Setup DoTween
在你想要使用DoTween代码的脚本中引入命名空间
using DG.Tweening;
默认的运动方式
主要表现是开始执行时,快速,在后期会逐步减速。该算法在执行时间长度比较短时看着比较合理舒适,但是如果出现类似距离较长,时间也相对较长时,就容易发现在后期有点很不好接受的缓慢移动。此时就需要考虑更改运动方式。
transform.DOMoveX(4, 1).SetEase(Ease.InOutQuint);
transform.DOMoveX(4, 1).SetEase(myAnimationCurve);
transform.DOMoveX(4, 1).SetEase(MyEaseFunction);
1、实现简单移动
transform.DOMove(new Vector3(2,3,4), 1);
调用后1秒移动到点(2,3,4),函数返回一个tweener
tweener可以通过一些带set前缀的方法进行设置
myTween.SetLoops(4, LoopType.Yoyo).SetSpeedBased();
通过带on前缀的方法绑定回调函数
myTween.OnStart(myStartFunction).OnComplete(myCompleteFunction);
如果回调函数要带参数可以使用lambda表达式
transform.DOMoveX(4, 1).OnComplete(()=>MyCallback(someParam, someOtherParam));
2、实现整体缩放的同时进行1秒后移动之后再旋转
Sequence mySequence = DOTween.Sequence();
返回可用的序列
mySequence.Append(transform.DOMoveX(45, 1));
mySequence.Append(transform.DORotate(new Vector3(0,180,0), 1));
使用Append将指定的Tweener加入到Sequence的结尾
mySequence.PrependInterval(1);
PrependInterval将一段时间加入到Sequence的开头
而使用Prepend可以将Tweener加入到Sequence的开头,
mySequence.Prepend(transform.DOMoveX(45, 1));
mySequence.Insert(0, transform.DOScale(new Vector3(3,3,3), mySequence.Duration()));
使用Insert可以重叠Tweener
以上代码也可写成
Sequence mySequence = DOTween.Sequence();
mySequence.Append(transform.DOMoveX(45, 1))
.Append(transform.DORotate(new Vector3(0,180,0), 1))
.PrependInterval(1)
.Insert(0, transform.DOScale(new Vector3(3,3,3), mySequence.Duration()));
DOTWEEN :: An error inside a tween callback was silently taken care of > The object of type
这个错误是以警告的方式提示你的,想要定位错误的地点可以在DoTween在面板中关闭安全模式
http://forum.demigiant.com/index.php?topic=151.0