DOTween插件常用函數解釋
1.DOTween.To(通用變化動畫)
解釋:將某一個值在一定的時間內變化到另一個值(通用的函數),可用于大部分的動畫變化
使用示例:
using UnityEngine;
using DG.Tweening;
?
public class ToTest : MonoBehaviour{//移動public void To(float duration){Vector3 endValue = new Vector3(10, 10, 10); //定義終點值DOTween.To(() => transform.position, //要移動的初始值pos => transform.position = pos, //移動過程的位置插值endValue, //目標值duration //移動耗時(秒)); ? ? ? ?}
}
?
2.DOMove(移動動畫)
解釋:將物體從當前位置移動到目標位置
衍生函數:DOMoveX、DOMoveY、DOMoveZ(將物體從當前位置沿著X/Y/Z方向移動)
使用示例:
using UnityEngine;
using DG.Tweening;
?
public class MoveTest : MonoBehaviour{public void MoveToTargetPosition(float duration,Vector3 targetPosition){transform.DOMove(targetPosition, //目標位置duration //移動耗時);}
}
?
3.DOScale(縮放動畫)
解釋:將物體從當前縮放值變化到目標縮放值
衍生函數:DOScaleX、DOScaleY、DOScaleZ(將物體沿X/Y/Z軸方向縮放)
使用示例:
using UnityEngine;
using DG.Tweening;
?
public class ScaleTest : MonoBehaviour{//縮放到目標縮放值public void ScaleToTargetScale(float duration,Vector3 targetScale){transform.DOScale(targetScale, //目標縮放值duration //縮放耗時);}//基于當前縮放值按倍率進行縮放public void ScaleToTargetScale(float duration,float scale){transform.DOScale(scale, //縮放倍率(基于當前倍率)duration //縮放耗時);}
}
4.DOJump(跳躍動畫)
解釋:將物體從當前位置”跳躍“到目標位置
endValue:結束位置,
jumpPower:跳躍的最大高度,
numJumps:跳躍次數,
jumpPower:持續時間,
snapping:只取整數值(默認為false)
using UnityEngine;
using DG.Tweening; ?// 引入命名空間public class Rotate : MonoBehaviour {void Start() {transform.DOJump(new Vector3(2, 2, 2), //結束位置4, //跳躍最大高度4, //跳躍次數5, //持續時間false //false表示取浮點數計算,true表示取整數計算);}
}
5.DOShake(搖晃動畫)
解釋:模擬隨機抖動的效果,無方向性
5.1 位置搖晃
-
DOShakePosition(float duration, float/Vector3 strength, int vibrato, float randomness, bool snapping, bool fadeOut)
5.2 旋轉搖晃
-
DOShakeRotation(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut)
5.3 縮放搖晃
-
DOShakeScale(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut)
5.4 參數解釋
以下按形參的順序解釋:
duration:持續時間,
strength:晃動幅度(默認為float:1),
vibrato:晃動的次數(默認為10),
randomness:隨機晃動角度(0-180,默認為90),
snapping:只取整數值(默認為false),
fadeOut:漸出效果(默認為true)
5.5 示例
using UnityEngine;
using DG.Tweening; ?// 引入命名空間public class Shake : MonoBehaviour {void Start() {transform.DOShakePosition(5);}
}
6.DOPunch(擊打動畫)
解釋:該動畫可以在位置、旋轉、縮放三種形式上模擬表現被強力擊打后的震動,有明確的方向性
6.1 位置擊打
-
DOPunchPosition(Vector3 punch, float duration, int vibrato, float elasticity, bool snapping)
6.2 旋轉擊打
-
DOPunchRotation(Vector3 punch, float duration, int vibrato, float elasticity)
6.3 縮放擊打
-
DOPunchScale(Vector3 punch, float duration, int vibrato, float elasticity)
6.4 參數解釋
以下形參按順序解釋:
punch:擊打方向和力度,
duration:持續時間,
vibrato:晃動的次數(默認為10),
elasticity:彈性系數(默認為1),
snapping:只取整數值(默認為false)
6.5 示例
using UnityEngine;
using DG.Tweening; ?// 引入命名空間public class Punch : MonoBehaviour {void Start() {transform.DOPunchPosition(new Vector3(2, 2, 2), 5);}
}
7.文字動畫
7.1 文字顏色變化
DOColor(Color to, float duration)
-
to:當前文字當前顏色要變化到的目標顏色
-
duration:變化過程的持續時間
7.2 文字透明度變化
DOFade(float to, float duration)
-
to:數值范圍是0~1,表示文字當前不透明度要變化到的目標不透明度
-
duration:變化過程的持續時間
7.3 打字機動畫
DOText(string to, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null)
-
to:要逐個文字打出的文本
-
duration:持續時間
-
richTextEnabled:是否支持富文本(默認為True)
-
scrambleMode:亂碼效果模式(默認為不啟用亂碼)
-
scrambleChars:亂碼字符(默認為null)
枚舉值 | 說明 |
---|---|
ScrambleMode.None | 默認值,不啟用亂碼,直接逐字顯示原文本。 |
ScrambleMode.All | 所有未顯示的字符替換為完全隨機字符(如字母、數字、符號)。 |
ScrambleMode.Uppercase | 用隨機大寫字母作為亂碼(如A、X、K )。 |
ScrambleMode.Lowercase | 用隨機小寫字母作為亂碼(如b、q、m )。 |
ScrambleMode.Numerals | 用隨機數字作為亂碼(如3、9、1 )。 |
ScrambleMode.Custom | 用自定義字符作為亂碼(需通過 scrambleChars 參數指定)。 |
8.動畫序列(重點)
允許你將多個動畫組合在一起,以特定的順序依次執行。適用于需要在特定時間順序內執行多個動畫的場景,例如:角色的移動、跳躍和旋轉等多個動作,可以使用序列來組織這些動畫。
8.1 順序動畫(Append)
說明:讓多個動畫按照在序列中的順序逐個執行
using DG.Tweening;
?
public class SequenceTest : MonoBehaviour{// 創建一個空序列Sequence sequence = DOTween.Sequence();// 添加動畫到序列(默認按順序執行)sequence.Append(transform.DOMoveX(5, 1f)); ?// 第一步:向右移動sequence.Append(transform.DORotate(new Vector3(0, 180, 0), 0.5f)); // 第二步:旋轉sequence.Append(transform.DOScale(Vector3.zero, 1f)); // 第三步:縮小消失// 播放序列sequence.Play();
}
8.2 并行動畫(Join)
說明:讓多個動畫同時進行。這個特別適合一些需要同時進行的行為,比如某個角色一邊移動一邊跳躍。
Sequence sequence = DOTween.Sequence();
?
// 第一步:移動和旋轉同時進行
sequence.Append(transform.DOMoveX(5, 1f));
sequence.Join(transform.DORotate(new Vector3(0, 180, 0), 1f)); // 與移動同步進行
// 第二步:縮小
sequence.Append(transform.DOScale(Vector3.zero, 0.5f));
sequence.Play();
8.3 動畫序列的其它操作
Sequence loopTween = DOTween.Sequence();
將一個新的動畫添加到序列的末尾。
loopTween.Append(Tween tween);
?
將一個新的動畫添加到序列的開頭。
loopTween.Prepend(Tween tween);
?
將一個新的動畫添加到序列中,與當前動畫同時播放。
loopTween.Join(Tween tween);
?
在指定時間插入一個新的動畫。
loopTween.Insert(float time, Tween tween);
?
在序列中添加一個間隔(不執行任何動畫的時間)。
loopTween.AppendInterval(float interval):
?
8.3 暫停、停止、重播、播放序列動畫
//播放序列動畫
loopTween.Play();
?
//暫停序列動畫
loopTween.Pause();
?
//停止序列動畫
loopTween.Kill();
?
//重播序列動畫
loopTween.Restart();
9.動畫緩動(SetEase)
9.1 預設動畫緩動表
DOTween為開發者提供了大量的預設好的動畫緩動,可以賦予動畫不同的運動效果。
類別 | Ease類型 | 效果描述 | 適用場景 |
---|---|---|---|
線性 | Linear | 勻速運動,無加速或減速 | 需要完全均勻的運動 |
平滑緩入 | InSine | 開始時緩慢,逐漸加速(正弦曲線) | 自然感強的啟動動作 |
InQuad | 緩入(二次方曲線,比InSine更明顯的加速) | 快速啟動的動畫 | |
InCubic | 緩入(三次方曲線,加速更強) | 強調爆發力效果 | |
InQuart | 緩入(四次方曲線,極強加速) | 極快速的開始 | |
InQuint | 緩入(五次方曲線,最強加速) | 夸張的加速效果 | |
InExpo | 緩入(指數曲線,初始幾乎靜止,突然加速) | 科技感或突然出現的效果 | |
InCirc | 緩入(圓形曲線,初始慢,后端急劇加速) | 彈射或沖刺效果 | |
InElastic | 緩入彈性效果(帶有回彈的振蕩) | 彈性物體(如彈簧) | |
InBack | 緩入回拉效果(先輕微反向,再加速) | 卡通風格的預備動作 | |
平滑緩出 | OutSine | 結束時緩慢減速(正弦曲線) | 自然停止的動作 |
OutQuad | 緩出(二次方曲線,明顯減速) | 快速停止的動畫 | |
OutCubic | 緩出(三次方曲線,減速更強) | 強調緩沖效果 | |
OutQuart | 緩出(四次方曲線,極強減速) | 突然剎車效果 | |
OutQuint | 緩出(五次方曲線,最強減速) | 夸張的緩沖效果 | |
OutExpo | 緩出(指數曲線,運動到終點前幾乎無減速,突然停止) | 瞬間停止的科技效果 | |
OutCirc | 緩出(圓形曲線,前端快速,末端急劇減速) | 撞擊或急停效果 | |
OutElastic | 緩出彈性效果(到達終點后回彈振蕩) | 彈性碰撞(如球落地) | |
OutBack | 緩出回彈效果(超過終點后回拉) | 卡通風格的過沖效果 | |
平滑緩入緩出 | InOutSine | 開始和結束均平滑(正弦曲線) | 自然的循環動作 |
InOutQuad | 對稱加速和減速(二次方曲線) | 標準平滑過渡 | |
InOutCubic | 更強的平滑加速和減速(三次方曲線) | 強調中間速度變化 | |
InOutQuart | 極強平滑加速和減速(四次方曲線) | 快速啟動和停止 | |
InOutQuint | 最強平滑加速和減速(五次方曲線) | 夸張的平滑效果 | |
InOutExpo | 幾乎瞬間加速和減速(指數曲線) | 科技感開關效果 | |
InOutCirc | 前后端急劇變化(圓形曲線) | 模擬跳躍或彈跳 | |
InOutElastic | 中間帶有彈性振蕩 | 彈性物體的完整動作 | |
InOutBack | 輕微過沖和回拉 | 卡通風格的完整動作 | |
特殊效果 | Flash | 自定義閃爍效果(需設置振幅和頻率) | 閃爍、震動 |
FlashIn/FlashOut | 快速閃爍緩入或緩出 | UI提示或警告效果 | |
Shake | 隨機震動(需設置強度、頻率等) | 相機抖動、物體震動 | |
自定義 | AnimationCurve | 使用Unity的AnimationCurve 自定義任意曲線 | 需要完全自定義的運動 |
EaseFunction | 通過代碼傳入自定義函數 | 復雜數學曲線或特殊算法 |
9.2 使用示例
transform.DOMove(new Vector3(10,10,10),3f).SetEase(Ease.OutBack);
transform.DOMove(new Vector3(10,10,10),3f).SetEase(Ease.InSine);
10.動畫回調函數
說明:動畫回調函數類似于Unity的生命周期函數,它允許你在動畫的生命周期內執行一些代碼。
回調函數名 | 解釋 | 示例 |
---|---|---|
.OnStart(Action onStart) | 在動畫開始時執行的回調 | tween.OnStart(() => Debug.Log("動畫開始")); |
.OnPlay(Action onPlay) | 在動畫播放時執行的回調 | tween.OnPlay(() => Debug.Log("動畫播放")); |
.OnUpdate(Action onUpdate) | 在每一幀更新時執行的回調 | tween.OnUpdate(() => Debug.Log("動畫更新")); |
.OnComplete(Action onComplete) | 在動畫完成時執行的回調 | tween.OnComplete(() => Debug.Log("動畫完成")); |
.OnKill(Action onKill) | 在動畫被殺死時執行的回調 | tween.OnKill(() => Debug.Log("動畫被殺死")); |
11.Set相關函數
函數名 | 解釋 | 示例 |
---|---|---|
.SetDelay(float delay) | 設置動畫開始前的延遲時間(以秒為單位) | tween.SetDelay(1f); // 延遲1秒后開始 |
.SetEase(Ease easeType) | 設置動畫的曲線類型(如線性、加速、減速等,類似設置PPT動畫的出現效果)。 | tween.SetEase(Ease.InOutQuad); // 使用 InOutQuad 緩動 |
.SetLoops(int loops, LoopType loopType) | 設置動畫的循環次數和循環類型(如循環、反向循環等)。 | tween.SetLoops(3, LoopType.Yoyo); // 循環3次,反向循環 |
.SetAutoKill(bool autoKill) | 設置動畫完成后是否自動銷毀。 | tween.SetAutoKill(false); // 動畫完成后不自動銷毀 |
.SetId(object id) | 設置動畫的 ID,以便后續查找和管理。 | tween.SetId("myTween"); // 設置 ID 為 "myTween" |
.SetUpdate(bool isIndependent): | 設置動畫是否獨立于時間更新(用于在時間暫停時仍然更新)。 | tween.SetUpdate(true); // 在時間暫停時仍然更新 |
12.查閱官方文檔
除了上述的內容,你還可以查閱DOTween的官方文檔,里面提供了插件所包含的全部API
文檔連接: DOTween - Documentation