引用
using DG.Tweening;动画使用
// 高度动画rectTransform = GetComponent<RectTransform>();rectTransform.DOSizeDelta(new Vector2(50f, 100f), 0.5f).SetLink(gameObject); // 动画
// 位置动画obj.transform.DOMove(new Vector3(5, 0, 0), 1f);obj.transform.DOLocalMove(new Vector3(2, 0, 0), 1f);
// 旋转动画obj.transform.DORotate(new Vector3(0, 90, 0), 1f);obj.transform.DOLocalRotate(new Vector3(0, 180, 0), 1f);
// 缩放动画obj.transform.DOScale(new Vector3(2, 2, 2), 1f);obj.transform.DOScale(0.5f, 1f); // 统一缩放
// 透明damageText.DOFade(0f, 0.2f);
// 更改颜色damageText.DOColor(Color.red, "_Color", 1f);
// 延迟和回调obj.transform.DOMoveX(5, 1f) .SetDelay(2f) // 延迟2秒 .OnStart(() => Debug.Log("动画开始")) .OnComplete(() => Debug.Log("动画完成")) .OnUpdate(() => Debug.Log("动画更新"));
// 序列动画Sequence sequence = DOTween.Sequence();
// 添加动画到序列sequence.Append(transform.DOMoveX(5, 1f)); // 顺序执行sequence.Join(transform.DOScale(2, 1f)); // 同时执行sequence.AppendInterval(1f); // 间隔sequence.Prepend(transform.DOMoveY(2, 0.5f)); // 在开头添加
sequence.Play(); // 播放序列
// 序列控制Sequence sequence = DOTween.Sequence();sequence .Append(transform.DOMoveX(5, 1f)) .SetAutoKill(false) // 不自动销毁 .SetRecyclable(true); // 可回收
sequence.Play();sequence.Pause();sequence.Rewind();sequence.TogglePause();延时器使用
Tween myDelay = DOVirtual.DelayedCall( 2.0f, () => { Debug.Log("2秒后执行的操作"); });
myDelay.Pause(); // 暂停myDelay.Play(); // 继续myDelay.Kill(); // 取消
// 每2秒执行一次DOVirtual.DelayedCall(2f, () => Debug.Log("每2秒执行一次")).SetLoops(-1, LoopType.Restart); // 无限循环
// 延迟一帧执行DOVirtual.DelayedCall( 0, () => { Debug.Log("下一帧执行"); });
// 条件满足后执行bool condition = false;DOVirtual.DelayedCall( 0.1f, () => { if (condition) { Debug.Log("条件满足"); } else { // 条件不满足,重新检查 DOVirtual.DelayedCall(0.1f, () => CheckCondition()); } });对象池使用
// 初始化时配置(推荐在游戏启动时调用)DOTween.Init( recycleAllByDefault: true, // 所有Tween默认会被回收 useSafeMode: true, // 安全模式检测错误 logBehaviour: LogBehaviour.ErrorsOnly);
Tween myTween = transform.DOMoveX(5, 1f) .SetAutoKill(false) // 设置为false,这样Tween完成后不会被自动销毁 .SetRecyclable(true); // 设置为可回收
// 使用完成后手动回收myTween.OnComplete(() => { if(myTween != null && myTween.active) { myTween.Recycle(); }});
DOTween.Clear(); // 清空所有 Tween,包括对象池中的DOTween.ClearCachedTweens(); // 只清空对象池中的 Tween
// 获取当前对象池中缓存的 Tween 数量int cachedTweens = DOTween.TotalCachedTweens();