Unity【DoTween】- 如何使Transform Tween动画序列可编辑
【摘要】
使用DoTween的动画序列功能时,我们需要编写类似这样的代码:
DOTween.Sequence() .Append(transform.DOMove(new Vector3(1f, 2f, 3f), 1f)) .Append(transform.DORotate(new Vector3(0f, 0f, 0f), 1f)...
使用DoTween的动画序列功能时,我们需要编写类似这样的代码:
-
DOTween.Sequence()
-
.Append(transform.DOMove(new Vector3(1f, 2f, 3f), 1f))
-
.Append(transform.DORotate(new Vector3(0f, 0f, 0f), 1f));
本文介绍的内容可以将DoTween的这种动画序列在编辑器中进行编辑,如图所示:
实现代码:
-
using System;
-
using DG.Tweening;
-
using UnityEngine;
-
-
namespace SK.Framework
-
{
-
[Serializable]
-
public sealed class TransformTweenAnimation
-
{
-
public Transform actor;
-
-
public TransformTweenAnimationType type;
-
-
public SpaceType space;
-
-
public bool isCustom;
-
-
public Vector3 startValue;
-
-
public Vector3 endValue;
-
-
public float duration = 1f;
-
-
public float delay;
-
-
public Ease ease;
-
-
public RotateMode rotateMode;
-
-
public Tween Play()
-
{
-
switch (type)
-
{
-
case TransformTweenAnimationType.Move:
-
switch (space)
-
{
-
case SpaceType.Local:
-
if (isCustom) actor.localPosition = startValue;
-
return actor.DOLocalMove(endValue, duration).SetDelay(delay).SetEase(ease);
-
case SpaceType.Global:
-
if (isCustom) actor.position = startValue;
-
return actor.DOMove(endValue, duration).SetDelay(delay).SetEase(ease);
-
default: return null;
-
}
-
case TransformTweenAnimationType.Rotate:
-
switch (space)
-
{
-
case SpaceType.Local:
-
if (isCustom) actor.localRotation = Quaternion.Euler(startValue);
-
return actor.DOLocalRotate(endValue, duration, rotateMode).SetDelay(delay).SetEase(ease);
-
case SpaceType.Global:
-
if (isCustom) actor.rotation = Quaternion.Euler(startValue);
-
return actor.DORotate(endValue, duration, rotateMode).SetDelay(delay).SetEase(ease);
-
default: return null;
-
}
-
case TransformTweenAnimationType.Scale:
-
if (isCustom) actor.localScale = startValue;
-
return actor.DOScale(endValue, duration).SetDelay(delay).SetEase(ease);
-
default: return null;
-
}
-
}
-
}
-
}
-
namespace SK.Framework
-
{
-
public enum TransformTweenAnimationType
-
{
-
Move,
-
-
Rotate,
-
-
Scale
-
}
-
}
-
namespace SK.Framework
-
{
-
public enum SpaceType
-
{
-
Local,
-
-
Global
-
}
-
}
-
using System;
-
using DG.Tweening;
-
-
namespace SK.Framework
-
{
-
[Serializable]
-
public sealed class TransformTweenAnimations
-
{
-
public bool isSequence;
-
-
public TransformTweenAnimation[] tweens = new TransformTweenAnimation[0];
-
-
public void Play()
-
{
-
if (isSequence)
-
{
-
Sequence sequence = DOTween.Sequence();
-
for (int i = 0; i < tweens.Length; i++)
-
{
-
sequence.Append(tweens[i].Play());
-
}
-
sequence.Play();
-
}
-
else
-
{
-
for (int i = 0; i < tweens.Length; i++)
-
{
-
tweens[i].Play();
-
}
-
}
-
}
-
}
-
}
使用示例:
-
using UnityEngine;
-
using SK.Framework;
-
-
public class TEST : MonoBehaviour
-
{
-
[SerializeField] private TransformTweenAnimations animations;
-
-
private void Start()
-
{
-
animations.Play();
-
}
-
}
文章来源: coderz.blog.csdn.net,作者:CoderZ1010,版权归原作者所有,如需转载,请联系作者。
原文链接:coderz.blog.csdn.net/article/details/123917884
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)