Skip to content

Commit e326bb7

Browse files
committed
feat: add ResetOnEnable option for UIEffectTweener
#299
1 parent 7a765c3 commit e326bb7

File tree

2 files changed

+36
-13
lines changed

2 files changed

+36
-13
lines changed

Packages/src/Editor/UIEffectTweenerEditor.cs

+3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ internal class UIEffectTweenerEditor : Editor
1616
private SerializedProperty _duration;
1717
private SerializedProperty _interval;
1818
private SerializedProperty _playOnEnable;
19+
private SerializedProperty _resetTimeOnEnable;
1920
private SerializedProperty _updateMode;
2021
private SerializedProperty _wrapMode;
2122
private SerializedProperty _onComplete;
@@ -28,6 +29,7 @@ private void OnEnable()
2829
_direction = serializedObject.FindProperty("m_Direction");
2930
_curve = serializedObject.FindProperty("m_Curve");
3031
_playOnEnable = serializedObject.FindProperty("m_PlayOnEnable");
32+
_resetTimeOnEnable = serializedObject.FindProperty("m_ResetTimeOnEnable");
3133
_delay = serializedObject.FindProperty("m_Delay");
3234
_duration = serializedObject.FindProperty("m_Duration");
3335
_interval = serializedObject.FindProperty("m_Interval");
@@ -54,6 +56,7 @@ public override void OnInspectorGUI()
5456
EditorGUILayout.PropertyField(_duration);
5557
EditorGUILayout.PropertyField(_interval);
5658
EditorGUILayout.PropertyField(_playOnEnable);
59+
EditorGUILayout.PropertyField(_resetTimeOnEnable);
5760
EditorGUILayout.PropertyField(_wrapMode);
5861
EditorGUILayout.PropertyField(_updateMode);
5962
EditorGUILayout.PropertyField(_onComplete);

Packages/src/Runtime/UIEffectTweener.cs

+33-13
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,10 @@ public enum PlayOnEnable
8181
[SerializeField]
8282
private PlayOnEnable m_PlayOnEnable = PlayOnEnable.Forward;
8383

84+
[Tooltip("Reset the tweening time when the component is enabled.")]
85+
[SerializeField]
86+
private bool m_ResetTimeOnEnable = true;
87+
8488
[Tooltip("The wrap mode of the tween.\n" +
8589
" Once: Clamp the tween value (not loop).\n" +
8690
" Loop: Loop the tween value.\n" +
@@ -220,11 +224,13 @@ public PlayOnEnable playOnEnable
220224
set => m_PlayOnEnable = value;
221225
}
222226

223-
[Obsolete("UIEffectTweener.restartOnEnable has been deprecated. Use UIEffectTweener.playOnEnable instead")]
224-
public bool restartOnEnable
227+
/// <summary>
228+
/// Reset the tweening time when the component is enabled..
229+
/// </summary>
230+
public bool resetTimeOnEnable
225231
{
226-
get => m_PlayOnEnable != PlayOnEnable.Forward;
227-
set => m_PlayOnEnable = value ? PlayOnEnable.None : PlayOnEnable.Forward;
232+
get => m_ResetTimeOnEnable;
233+
set => m_ResetTimeOnEnable = value;
228234
}
229235

230236
/// <summary>
@@ -303,13 +309,13 @@ private void OnEnable()
303309
switch (playOnEnable)
304310
{
305311
case PlayOnEnable.KeepDirection:
306-
Play();
312+
Play(resetTimeOnEnable);
307313
break;
308314
case PlayOnEnable.Forward:
309-
PlayForward();
315+
PlayForward(resetTimeOnEnable);
310316
break;
311317
case PlayOnEnable.Reverse:
312-
PlayReverse();
318+
PlayReverse(resetTimeOnEnable);
313319
break;
314320
}
315321
}
@@ -339,6 +345,11 @@ public void Play(bool resetTime)
339345
ResetTime();
340346
}
341347

348+
Play();
349+
}
350+
351+
public void Play()
352+
{
342353
_isPaused = false;
343354

344355
if (!isTweening)
@@ -347,15 +358,14 @@ public void Play(bool resetTime)
347358
}
348359
}
349360

350-
public void Play()
361+
public void PlayForward(bool resetTime)
351362
{
352-
ResetTime();
353-
_isPaused = false;
354-
355-
if (!isTweening)
363+
if (resetTime)
356364
{
357-
m_OnComplete.Invoke();
365+
ResetTime();
358366
}
367+
368+
PlayForward();
359369
}
360370

361371
public void PlayForward()
@@ -369,6 +379,16 @@ public void PlayForward()
369379
}
370380
}
371381

382+
public void PlayReverse(bool resetTime)
383+
{
384+
if (resetTime)
385+
{
386+
ResetTime();
387+
}
388+
389+
PlayReverse();
390+
}
391+
372392
public void PlayReverse()
373393
{
374394
direction = Direction.Reverse;

0 commit comments

Comments
 (0)