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即可:- 硬切立即终止
直接调用Kill方法,动画会瞬间停在当前帧的缩放状态:// 终止时停在当前缩放值 _scaleLoopTween.Kill(); // 如果终止后需要立刻回到图片原始缩放比例,传参true即可 // _scaleLoopTween.Kill(true); - 软终止平滑过渡
如果不需要瞬间打断,想让动画跑完当前正在执行的缩放/回弹段再停止,直接修改循环次数为0即可,不会出现生硬的跳变:_scaleLoopTween.SetLoops(0);
- 硬切立即终止
省事替代方案(多动画场景不推荐)
如果这个图片物体上只挂了这一个DOTween动画,你也可以不用单独存Tween实例,需要终止时直接调用物体的DOKill方法,会清除该物体Transform上绑定的所有DOTween动画:// 同样传true可以在终止时直接回到初始缩放状态 image.transform.DOKill();
注意:不要在动画已经被Kill之后再调用该Tween的控制方法,会触发空引用,如果你不确定动画状态,可以先判断
_scaleLoopTween.IsActive()再执行操作。
内容的提问来源于stack exchange,提问作者BigShaqSkrrr
相关产品推荐
相关产品推荐

