跳到主要内容

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