跳到主要内容

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 列表。