You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity使用DOTween制作图片动画时如何终止循环播放

DOTween终止循环动画实现方案

你当前的链式调用代码没有保存创建出的Tween实例,无法直接精准控制终止,按以下步骤实现即可:

  • 第一步:持有动画实例
    在对应脚本类中声明Tween类型的字段,用来存储你创建的缩放循环动画,方便后续调用控制:

    private Tween _scaleLoopTween;
    

    将你原来的动画初始化代码替换为赋值给该字段的写法:

    _scaleLoopTween = image.transform.DOScale(1.6f, 1.5f)
        .SetEase(Ease.InOutSine)
        .SetLoops(-1, LoopType.Yoyo)
        // 可选:绑定物体生命周期,物体销毁时自动回收动画,避免空引用
        .SetLink(image.gameObject);
    
  • 第二步:按需选择终止逻辑
    根据你要的动画终止效果,在按钮点击回调、或者其他需要打断动画的方法中调用对应API即可:

    1. 硬切立即终止
      直接调用Kill方法,动画会瞬间停在当前帧的缩放状态:
      // 终止时停在当前缩放值
      _scaleLoopTween.Kill();
      
      // 如果终止后需要立刻回到图片原始缩放比例,传参true即可
      // _scaleLoopTween.Kill(true);
      
    2. 软终止平滑过渡
      如果不需要瞬间打断,想让动画跑完当前正在执行的缩放/回弹段再停止,直接修改循环次数为0即可,不会出现生硬的跳变:
      _scaleLoopTween.SetLoops(0);
      
  • 省事替代方案(多动画场景不推荐)
    如果这个图片物体上只挂了这一个DOTween动画,你也可以不用单独存Tween实例,需要终止时直接调用物体的DOKill方法,会清除该物体Transform上绑定的所有DOTween动画:

    // 同样传true可以在终止时直接回到初始缩放状态
    image.transform.DOKill();
    

注意:不要在动画已经被Kill之后再调用该Tween的控制方法,会触发空引用,如果你不确定动画状态,可以先判断_scaleLoopTween.IsActive()再执行操作。

内容的提问来源于stack exchange,提问作者BigShaqSkrrr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:48:15