当前位置:   article > 正文

Unity 使用 Dotween 的 Sequence 制作UI动画并且可重复利用_unity dotween sequence

unity dotween sequence


前言

DOTween可以制作简易的UI动画,避免创建大量的Animator,本篇文章介绍一下我制作UI动画时的一些技巧

效果展示

 

一、DOTween是什么?

DOTween是UnityAssetStore中一个免费的插件,用于创建简单的补间动画,常用与UI动画,延迟调用,移动旋转,打字机等效果

二、使用步骤

1.导入DOTween

UnityAssetStore中添加到我的资源,在Windows->PackageManager ,Packages选择My Assets,搜索DOTween,点击import全部导入即可

 

2.配置DOTween

第一次导入DOTween需要等待一定时间编译完成,出现此面板后点击Setup DOTween(如果没有出现此面板,点击

 下一个出现的面板点击apply即可

3.使用代码编写动画

  1. using DG.Tweening;
  2. Sequence se;
  3. private void Awake()
  4. {
  5. se = DOTween.Sequence();
  6. se.SetAutoKill(false);
  7. se.Pause();
  8. CanvasGroup[] canvasGroups=GetComponentsInChildren<CanvasGroup>();
  9. se.Append(canvasGroups[0].DOFade(0, 1f).From().SetDelay(2));
  10. se.Append(canvasGroups[0].GetComponent<RectTransform>().DOAnchorPosX(200f, 1f).From(true).SetEase(Ease.OutExpo));
  11. se.Insert(0.5f, canvasGroups[1].DOFade(0, 1f).From())
  12. .Join(canvasGroups[1].GetComponent<RectTransform>().DOAnchorPosX(-200f, 1f).From(true).SetEase(Ease.OutExpo))
  13. .Join(canvasGroups[2].DOFade(0, 1f).From())
  14. .Join(canvasGroups[2].GetComponent<RectTransform>().DOAnchorPosY(-200f, 1f).From(true).SetEase(Ease.OutExpo));
  15. }
  16. private void Update()
  17. {
  18. if(Input.GetKeyDown(KeyCode.Escape))
  19. {
  20. se.Restart();
  21. }
  22. }

实现效果为

 

注:此UI界面分为顶部,中部,底部三部分,每一个CanvasGroup代表其中一部分,每一部分的UI均放在对应CanvasGroup下面,CanvasGroup可以管控其子物体所有UI的透明度,tween表示动画

1.顶部UI在1秒内从0到1显示

2.顶部UI显示完毕后,从当前右侧200单位距离1秒内移动到当前位置

3.在当前序列播放到0.5秒时,中部UI在1秒内从0到1显示

同时从当前左侧200单位距离1秒内移动到当前位置

同时底部UI在1秒内从0到1显示

同时底部UI从当前下方200单位距离1秒内移动到当前位置

4.代码API解释

1.Sequnce se = DOTween.Sequence();//创建一个新的序列,用于存放补间动画

2.se.SetAutoKill(false);//当序列播放完毕后,不自动Kill(如果被Kill,动画被回收无法再次播放)

3.se.Pause();//当前序列动画暂停(如果不暂停创建后就会播放)

4.se.Append(tween);//当前序列追加一个动画,追加的动画会按顺序依次播放,不会同时播放

5.se.Insert(time,tween);//在当前序列播放到time秒后播放tween,同时播放

6.se.Join(tween);//在当前序列中最后一个插入的tween的开始时间(受delay影响)播放tween,同时播放

7.se.Restart();//动画重新播放

8.rectransform.DOAnchorPosX(200f, 1f).From(true);//从自身当前右侧200单位距离1秒内移动到当前位置

(From方法表示从指定位置移动到当前位置,true则表示相对位置,如果不加true,代码会像下面的)

rectransform.DOAnchorPosX(rectransform.anchoredPosition.x+200f, 1f).From()

注:当使用From方法时,无论当前tween是否有延迟,只要添加进队列或者创建动画,对象会直接被拉到起始位置

SetEase(ease)设置缓动类型,各种缓动类型效果见

DOTween缓动类型动画效果图


 

 

总结

使用此方法可以简单创建多种UI动画,并且方便管理,无需保存无用数据,可以在已经搭好的UI界面直接添加动画

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/867798?site
推荐阅读
相关标签
  

闽ICP备14008679号