跳至主要内容

DoTweenAnimEvent

重要 注意 提醒

Coding Style wiki​


DoTweenAnimEvent 是 TweenSystem 的補間動畫群組播放器,將多個 DoTweenAnim 統一以 Parallel (並行) 或 Sequence (序列) 模式播放,提供正向 (PlayNormal)、反向 (PlayReverse)、觸發切換 (PlayTrigger) 等播放方法與結束回調 (endCallback);透過 Add Component/OxGKit/TweenSystem/DoTweenAnimEvent 添加。

命名空間OxGKit.TweenSystem
類型public class DoTweenAnimEvent : MonoBehaviour
原始碼DoTweenAnimEvent.cs
using OxGKit.TweenSystem;

重要 DoTweenAnimEvent 僅於運行時 (Runtime) 播放,不支持編輯器預覽 (Preview Mode 僅支持 DoTweenAnim,參考模塊介紹)。

快速上手​

using DG.Tweening;
using OxGKit.TweenSystem;
using UnityEngine;

public class PanelController : MonoBehaviour
{
// 於 Inspector 拖曳配置 Do Tween Anims 清單 (DriveMode 設為 Event)
[SerializeField]
private DoTweenAnimEvent _panelAnim;

// 開啟面板 (正向播放)
public void OpenPanel()
{
this._panelAnim.PlayNormal(() => Debug.Log("Panel opened"));
}

// 關閉面板 (反向播放)
public void ClosePanel()
{
this._panelAnim.PlayReverse(() => this.gameObject.SetActive(false));
}
}

通用規則​

播放模式 (PlayMode)​

public enum PlayMode
{
Parallel, // 並行播放 (全部同時)
Sequence // 序列播放 (依清單順序逐個)
}
  • Parallel:清單中所有 DoTweenAnim 同時播放,endCallback 於最大時長結束後觸發。
  • Sequence:依清單順序逐個播放,每個 DoTweenAnim 播放完畢 (以其最大軌道時長計) 才播放下一個,endCallback 於全部播放結束後觸發。

觸發方向 (trigger)​

  • trigger = true 正向播放 (normal);trigger = false 反向播放 (reverse)。
  • 各 DoTweenAnim 依自身軌道的 playMode 進行正向或反向播放 (詳見 DoTweenAnim)。

注意 清單中的 DoTweenAnim 其 DriveMode 應設為 Event (Active 模式會於激活時自動重播,請勿混用);且每個 DoTweenAnim 至少需啟用一個補間軌道,否則計算群組時長時會發生 NullReferenceException。


成員​

成員說明
public PlayMode playMode群組播放模式 (預設 Parallel),Inspector: Play Mode。
public List<DoTweenAnim> doTweenAnims受控的 DoTweenAnim 清單,Inspector: Do Tween Anims。

播放控制​

方法總覽​

方法說明
PlayNormal正向播放。
PlayReverse反向播放。
PlayTrigger觸發播放 (自動翻轉或指定方向)。
PlayTriggerOnce僅於觸發方向改變時播放一次。
ResetTrigger重置觸發旗標。
KillKill 當前群組播放序列。

PlayNormal​

public void PlayNormal()

public void PlayNormal(TweenCallback endCallback = null)

正向播放 (trigger = true) 清單中的所有 DoTweenAnim,endCallback 於全部播放結束後觸發。

this._panelAnim.PlayNormal(() => Debug.Log("All tweens ended"));

PlayReverse​

public void PlayReverse()

public void PlayReverse(TweenCallback endCallback = null)

反向播放 (trigger = false) 清單中的所有 DoTweenAnim,endCallback 於全部播放結束後觸發。

this._panelAnim.PlayReverse(() => this.gameObject.SetActive(false));

PlayTrigger​

public void PlayTrigger()

public void PlayTrigger(TweenCallback endCallback = null)

public void PlayTrigger(bool trigger, TweenCallback endCallback = null)

觸發播放:無 trigger 參數的版本會自動記錄並翻轉觸發旗標 (每次呼叫正反向交替);指定 trigger 的版本則依參數決定方向 (true = 正向、false = 反向)。

// 每次呼叫正反向交替 (開 -> 關 -> 開...)
this._panelAnim.PlayTrigger();

// 指定方向 + 結束回調
this._panelAnim.PlayTrigger(true, () => Debug.Log("Played normally"));

PlayTriggerOnce​

public void PlayTriggerOnce(bool trigger)

public void PlayTriggerOnce(bool trigger, TweenCallback endCallback = null)

僅於 trigger 與上次記錄的狀態不同時才播放 (true = 正向、false = 反向),避免同狀態重複播放,適合搭配 Toggle 類 UI。

// Toggle 切換時播放 (同狀態不重播)
toggle.onValueChanged.AddListener((isOn) =>
{
toggle.GetComponent<DoTweenAnimEvent>().PlayTriggerOnce
(
isOn,
() => Debug.Log("Toggle tween finished")
);
});

ResetTrigger​

public void ResetTrigger()

重置觸發旗標 (回到 false),影響 PlayTrigger 的翻轉起點與 PlayTriggerOnce 的狀態判斷。

Kill​

public void Kill()

Kill 當前的群組播放序列 (各播放方法呼叫時,也會先自動 Kill 前一次的序列再重新播放)。

提醒 UI 物件銷毀或回收前建議先呼叫 Kill(),避免 endCallback 回調到已銷毀的物件。


清單管理​

方法總覽​

方法說明
SetPlayMode設置群組播放模式。
AddDoTweenAnim動態加入一個或多個 DoTweenAnim (可鏈式)。
RemoveDoTweenAnim移除指定的 DoTweenAnim。
ClearDoTweenAnims清空清單。

SetPlayMode​

public void SetPlayMode(PlayMode playMode)

設置群組播放模式 (Parallel / Sequence)。

AddDoTweenAnim​

public DoTweenAnimEvent AddDoTweenAnim(params DoTweenAnim[] doTweenAnims)

動態加入一個或多個 DoTweenAnim 至清單,回傳自身可鏈式呼叫。

animEvent
.AddDoTweenAnim(anim1, anim2)
.PlayNormal(() => Debug.Log("Played"));

RemoveDoTweenAnim​

public void RemoveDoTweenAnim(DoTweenAnim doTweenAnim)

從清單中移除指定的 DoTweenAnim。

ClearDoTweenAnims​

public void ClearDoTweenAnims()

清空整個 DoTweenAnim 清單。