关于DoTween中Sequence的一些坑

DoTween.Sequence

DoTween 文档

类全局或局部声明

例如:在unity中

	private Sequence s;
	 void Start()
    {
         s= DOTween.Sequence();  
    }

或者 直接

	private Sequence s=DOTween.Sequence();	

效果等价,都作为一个全局的Tween(全局变量);

现实现如下功能:点击一个点,人物走到该点上

	List<Tranform> Path;
	 void FollowPath()
     {      
     	 //Sequence s=DOTween.Sequence();	在声明局部变量	
         for (int i = 0; i < finalPath.Count; i++)
       {
       	s.Append(transform.DOMove(Path[i].Position,0.5f).SetEase(Ease.Linear));  
       	 s.AppendCallback(() =>Clear() ) ; 
       	 s.SetId("FollowPath");        
       }
    }
    void Clear()
        {            
            Path.Clear()}

仅展示效果不理解原因
s为局部变量时
请添加图片描述
s为全局变量(类字段)时
调试发现for循环也是全部执行的
请添加图片描述

暂停,杀死,回调

s为全局变量(类字段)时

transform.DOPause();
transform.DOKill();
DOTween.Kill (transform);

均可暂停或杀死动画,但不响应回调( s.AppendCallback(() =>Clear() ) ; )

s为局部变量时
不可通过上述代码暂停或杀死动画,但是响应回调;在这里插入图片描述
也可以通过设置 (s.SetId(“FollowPath”))Id, 通过 DOTween.Kill(“FollowPath”) 来暂停或杀死动画;

一个问题

Sequence为局部变量时,并且在每次调用时不杀死之前的动画;会出现如下效果
请添加图片描述
即动画1比动画2时间长,动画2播放后会继续播放动画1;
解决办法:如上述通过设置Id来杀死动画;

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值