Unity里面有五个DoTweenAnimation的动画,有一个按钮,当按钮点击次数为奇数时可以执行第一个动画正向播放后,等待两秒后第二个动画正向播放,第二个动画播放完之后第三个动画才能正向播放,第三个动画正向播放完之后,等待两秒钟后第四个动画正向播放,第四个动画播放完之后第五个动画才能正向播放;当点击次数为偶数时,第五个动画反向播放,第五个动画播放完之后,等待两秒后第四个动画反向播放,第四个动画播放完之后第三个动画反向播放,实例代码
时间: 2025-06-26 08:06:55 浏览: 10
### Unity 和 DoTween Animation 实现按钮控制奇偶次点击动画正反向播放
在 Unity 中,可以利用 DoTween 插件创建复杂的动画序列,并通过脚本逻辑实现按钮控制动画的正向和反向播放功能。以下是具体实现方法:
#### 代码示例
以下是一个完整的 C# 脚本,用于实现按钮控制动画按奇偶次点击切换正向/反向播放的功能。
```csharp
using UnityEngine;
using DG.Tweening;
public class ButtonControlledAnimation : MonoBehaviour
{
public Transform target; // 动画目标对象
private int clickCount = 0; // 记录点击次数
private Tween tween; // 存储当前的 DOTween 动画实例
void Start()
{
if (target == null)
Debug.LogError("Target object is not assigned!");
}
public void OnButtonClicked() // 绑定到按钮的OnClick事件
{
clickCount++; // 每次点击增加计数器
bool playForward = (clickCount % 2 != 0); // 判断奇偶次点击
if (tween != null && tween.IsPlaying()) // 如果已有正在运行的动画,则先停止它
{
tween.Kill();
}
CreateAndPlayAnimation(playForward);
}
private void CreateAndPlayAnimation(bool forward)
{
float duration = 1f; // 设置动画持续时间
Vector3 startPosition = new Vector3(-5, 0, 0); // 开始位置
Vector3 endPosition = new Vector3(5, 0, 0); // 结束位置
if (forward)
{
tween = target.DOMove(endPosition, duration).SetEase(Ease.InOutQuad); // 正向移动
}
else
{
tween = target.DOMove(startPosition, duration).SetEase(Ease.InOutQuad); // 反向移动
}
}
}
```
#### 解释
上述代码实现了以下功能:
- 使用 `Transform` 类型的目标对象作为动画作用的对象[^1]。
- 定义了一个整型变量 `clickCount` 来记录按钮被点击的总次数。
- 在每次按钮点击时判断当前点击是奇数还是偶数次,以此决定动画的方向。
- 当前动画如果仍在运行中会立即终止并重新设置新的方向[^4]。
此代码片段展示了如何结合 Unity 的组件系统以及 DoTween 提供的强大 API 创建交互式的动画效果。
#### 注意事项
为了使该脚本正常工作,请确保完成以下配置:
1. 导入最新版本的 **DoTween** 插件至项目中。
2. 将需要执行动画的游戏物体拖拽到 Inspector 面板上的 `Target` 字段绑定。
3. 把此脚本附加给场景内的某个 GameObject 并连接 UI 按钮的 Clicked Event 至其公共方法 `OnButtonClicked()` 上。
---
###
阅读全文