官方文档: http://dotween.demigiant.com/index.php
一些DOTween方法的介绍
安装插件后也可以在Add Component里添加DOTween Animation / Path两个组件来可视化地编辑
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using DG.Tweening; //DO类命名空间 5 using UnityEngine.UI; 6 7 public class GetStart : MonoBehaviour { 8 9 public Camera mainCamera; 10 public Text text; 11 public RectTransform image2; 12 public Vector3 myValue = new Vector3(0, 0, 0); 13 public RectTransform imageTransform; 14 private bool isIN = false; 15 16 // Use this for initialization 17 void Start () { 18 19 //通过camera的移动来产生屏幕震动效果 20 mainCamera.DOShakePosition(2,new Vector3(2,2,0)); 21 22 //==================================================================================== 23 24 //Text动画 25 text.DOText("显示文字动画效果,时间2秒", 2); 26 text.DOColor(Color.red, 1); //改变颜色 27 text.DOFade(0, 4); //改变Alpha值 28 29 //===================================================================================== 30 31 //控制image2移动 32 Tweener tweener2 = image2.transform.DOLocalMoveX(0, 3); 33 //枚举类型,设置动画曲线类型 34 tweener2.SetEase(Ease.InBack); 35 //循环播放次数 36 tweener2.SetLoops(2); 37 //当动画播放完调用方法 38 tweener2.OnComplete(OnClick); 39 40 //=============================================================================================== 41 42 //由于每次Click时都会创建这个动画并保存,因此放到Start方法下只执行一次 43 //DOLocalMove & DOMove是Dotween插件中的方法 44 Tweener tweener = imageTransform.DOLocalMove(new Vector3(0, 0, 0), 1, true);//动画放完会默认销毁 45 //创建一个Tweener对象来管理动画信息,每次调用DO类型方法都会创建一个tweener对象,这个对象由dotween来管理 46 tweener.SetAutoKill(false); //关闭自动销毁 47 tweener.Pause(); //暂停动画,一开始不播放 48 49 //=========================================================================================================== 50 51 // lambda表达式 52 // () => myValue返回myValue值 53 // x => myValue = x把计算得到的插值赋给myValue 54 // new Vector3(10, 10, 10)目标值 55 // 2是所花时间(秒) 56 DOTween.To(() => myValue, x => myValue = x, new Vector3(10, 10, 10), 2); 57 58 //加上From()方法后相当于从目标位置Vector3(10, 10, 10)移动到原本的坐标位置 59 //From()方法默认为False,如果设置为From(true)则是相对距离 60 //例如原本坐标是(1,1,1),这里就是实际从(11,11,11)开始移动,一共移动了(10,10,10)的距离 61 DOTween.To(() => myValue, x => myValue = x, new Vector3(10, 10, 10), 2).From(); 62 63 } 64 65 // Update is called once per frame 66 void Update () { 67 transform.position = myValue; 68 } 69 70 //点击button后image移动与移出 71 public void OnClick() 72 { 73 if(!isIN) 74 { 75 //由于DoPlay()方法只会执行一次,因此用下面这种方法 76 imageTransform.DOPlayForward(); //前放动画 77 isIN = true; 78 } 79 else 80 { 81 imageTransform.DOPlayBackwards(); //倒放动画 82 isIN = false; 83 } 84 85 86 87 88 } 89 }