1
0
mirror of https://github.com/Cardidi/dotween-upm-fork.git synced 2025-12-21 01:36:05 +08:00

57 lines
1.6 KiB
C#

using System;
using DG.Tweening;
using UnityEngine;
using UnityEditor;
[ExecuteInEditMode]
public class TweenManager : MonoBehaviour
{
#if UNITY_EDITOR
#region Editor-only Events
public static event Action<Tween> OnEditorPreviewPrepareTweenCommand;
public static event Action OnEditorPreviewPlayCommand;
public static event Action OnEditorPreviewStopCommand;
static void Dispatch_OnEditorPreviewPrepareTweenCommand(Tween t) { if (OnEditorPreviewPrepareTweenCommand != null) OnEditorPreviewPrepareTweenCommand(t); }
static void Dispatch_OnEditorPreviewPlayCommand() { if (OnEditorPreviewPlayCommand != null) OnEditorPreviewPlayCommand(); }
static void Dispatch_OnEditorPreviewStopCommand() { if (OnEditorPreviewStopCommand != null) OnEditorPreviewStopCommand(); }
#endregion
#endif
#region Serialized
[SerializeField] Transform[] targets;
#endregion
Tween[] tweens;
void OnEnable()
{
if (targets == null) return;
tweens = new Tween[targets.Length];
for (int i = 0; i < targets.Length; ++i) {
tweens[i] = targets[i].DOMoveX(5, 2);
#if UNITY_EDITOR
if (!Application.isPlaying) Dispatch_OnEditorPreviewPrepareTweenCommand(tweens[i]);
#endif
}
#if UNITY_EDITOR
if (!Application.isPlaying) Dispatch_OnEditorPreviewPlayCommand();
#endif
}
void OnDisable()
{
#if UNITY_EDITOR
if (!Application.isPlaying) Dispatch_OnEditorPreviewStopCommand();
#endif
// Kill all tweens
foreach (Tween t in tweens) t.Kill();
tweens = null;
}
}