跳至主要内容

DoTweenAnimEvent

重要 注意 提醒

Coding Style wiki


DoTweenAnimEventTweenSystem補間動畫群組播放器,將多個 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)。

注意 清單中的 DoTweenAnimDriveMode 應設為 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 清單。