An add-on to DOTween that allows creating and previewing complex tweens in the editor.
Great for animating UIs.
Note: meant for Unity versions 2021.2 or later, explained here.
See "Installation" on OpenUPM. Add these scopes:
com.thejoun
com.solidalloy
org.nuget
Make sure you've got DOTween installed (either the free version or Pro).
Additionally, you'll nee to create an .asmdef
file for DoTween modules.
Go to Tools > Demigiant > DoTween Utility Panel
and then select Create ASMDEF...
.
Tween Creator references the .asmdef
file by GUID,
and the created one has a random GUID assigned.
To fix the reference, find the meta file
(Assets\Plugins\Demigiant\DOTween\Modules\DOTween.Modules.asmdef.meta
)
and replace the guid
value with
4a27d636c21081747a8c6b481cccc046
. Then reload your project.
That's the only way I know to make the plugin work with DOTween. As of february 2023 there are ongoing efforts to release DOTween as a package, which would make the whole thing a lot easier (see issue on github).
There are no side effects, which means no changes will be left on any objects when you press RESET, compared to the state before starting PREVIEW.
Some changes may be left on objects if you're using a version of Unity before 2021.2. That's because a certain method is unavailable.
To switch the type of a Tween component, right-click the component's header and choose 'Switch Type'.
// can assign any type of tween, group or sequence
[SerializeField] private TweenPlayable tween;
private void Test()
{
// use any of these to play:
tween.PlayForward();
tween.PlayBackwards();
tween.RewindAndPlayForward();
tween.Rewind();
}
[TypeCategory(TweenCategory.Basic)]
public class TweenScale : TweenCustomPlayable
{
[Header("Scale")]
[SerializeField] private Transform tr;
[SerializeField] private Vector3 target = Vector3.one;
[SerializeField] private Vector3 origin = Vector3.one;
private Vector3 m_savedState;
public override void PlayForward() => PlaySingleTween(tr.DOScale(target, duration));
public override void PlayBackwards() => PlaySingleTween(tr.DOScale(origin, duration));
public override void SavePreviewState() => m_savedState = tr.localScale;
public override void RestorePreviewState() => tr.localScale = m_savedState;
public override void Rewind()
{
base.Rewind();
tr.localScale = origin;
}
}
The TypeCategory
attribute is used to group certain tweens together
in the type switch context menu.