在Unity手游开发中,经常用到插值运算,我们可以使用Mathf.Lerp自行去实现效果,但是使用插件提高了我们的开发效率,这里归结一下DoTween的基本使用方式以及效果说明:

直接代码:

  1. using DG.Tweening;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6.  
  7. public class OwnTextDoTween : MonoBehaviour {
  8. //DoTween.To();
  9. public int value;
  10. public GameObject cube;
  11. Vector3 myValue = new Vector3(, , );
  12.  
  13. //打字机
  14. //text.DoText()
  15. public Text text;
  16.  
  17. //屏幕震动效果
  18. // mainCamera.DOShakePosition()
  19. public Camera mainCamera;
  20.  
  21. //冷却Image
  22. public Image image;
  23.  
  24. public float start = ;//fillAmount最大值
  25. public float end = ;//fillAmount最小值
  26.  
  27. void Start()
  28. {
  29. #region 1. DOTween.To() 对变量做一个动画,通过插值的方式修改一个值的变化
  30. ///对变量做一个动画,通过插值的方式修改一个值的变化
  31. //A. 用两秒的时间从0变化到50
  32.  
  33. //()=> value,表示返回值为value,x=>value=x,表示将系统计算好的x值(当前值到目标值的插值)赋给value,50,表示达到的目标值,5表示所需时间
  34.  
  35. // value = 0;
  36. // DOTween.To(() => value, x => value =x, 50,5);
  37.  
  38. //B. 控制Cube或UI面板的动画
  39.  
  40. ///1)、将脚本挂在Cube上,并且在Update方法中把myValue的值赋给当前位置,这样便实现了Cube从当前位置移动到了目标位置
  41. ///用两秒的时间从0,0,0变化到10,10,10
  42. ///()=> myValue,表示返回值为myValue,x=>myValue=x,表示将系统计算好的x值(当前值到目标值的插值)赋给myValue,new Vector3(10,10,10),表示达到的目标值,5表示所需时间
  43.  
  44. // DOTween.To(() => myValue, x => myValue = x, new Vector3(10, 10, 10), 5);
  45.  
  46. #endregion
  47.  
  48. #region 5. FromTween:表示让物体从目标位置移动到当前位置,即等同于播放反向的移动动画
  49.  
  50. //1. DOMoveX()、DOMoveY()、DOMoveZ()
  51.  
  52. ///A. 如果只是让物体的单个坐标移动,可直接用DOMoveX()、DOMoveY()、DOMoveZ()方法控制移动动画,参数为(目标位置,所需时间)
  53. // Tweener tweer =cube.transform.DOMoveX(10, 3);
  54.  
  55. ///B. DoTween中任何调用动画的方法后面都可以添加From(),表示从目标位置移动到当前位置
  56. // tweer.From();
  57.  
  58. ///C. From(true)表示目标坐标等于当前坐标加上当前目标坐标,如果物体当前坐标为2,那么这行代码表示从目标位置(10+ 2),经过1秒,移动到当前位置(2)
  59. /// tweer.From(true);
  60.  
  61. //2. DOLocalMoveX()、DOLocalMoveY()、DOLocalMoveZ()
  62.  
  63. /// 表示局部坐标的位移动画方法。DoTween中所有对动画的设置都是通过对象Tweener来完成的
  64.  
  65. // Tweener tweener = cube.transform.DOLocalMoveX(10, 2f);
  66.  
  67. #endregion
  68.  
  69. #region 6.SetEase() 设置缓冲类型 通过次方法来设置动画的曲线,曲线动画效果很多,在此仅做三个案例,其他的可以在系统给的枚举类型中找
  70.  
  71. // Tweener teweer = cube.transform.DOMoveX(10, 2);
  72. //A.Ease.InBack
  73. /// 表示物体先向后一点,再向前播放(相当于蓄力起跑)
  74. // teweer.SetEase(Ease.InBack);
  75.  
  76. //B.Ease.InBounce
  77.  
  78. ///相当于一个多次蓄力进入的效果
  79. // teweer.SetEase(Ease.InBounce);
  80.  
  81. //C.Ease.OutBounce
  82.  
  83. /// 相当于一个落地之后的弹跳效果(惯性撞击反弹(物理属性))
  84. // teweer.SetEase(Ease.OutBounce);
  85.  
  86. #endregion
  87.  
  88. #region 7.SetLoops()可以通过此方法设置动画循环的次数
  89. // Tweener twer = cube.transform.DOMoveX(10, 3);
  90.  
  91. //表示动画的循环次数
  92. //twer.SetLoops(2);//循环两次
  93.  
  94. #endregion
  95.  
  96. #region 8.OnComplete()表示事件函数,当前动画播放完后调用另一个方法,参数为需要调用的方法
  97. //Tweener twer = cube.transform.DOMoveX(10, 3);//DoTween中所有对动画的设置都是通过对象Tweener来完成的
  98. //twer.SetEase(Ease.OutBounce);//相当于一个落地之后弹跳的效果
  99. //twer.SetLoops(2);//表示动画的循环次数
  100. //twer.OnComplete(Onclick);//表示当前动画播放完之后调用的事件,相当于一个注册方法,参数为需要注册的方法即为Onclick
  101. #endregion
  102.  
  103. #region 9. SetId 设置ID 可以只用 int、string、object等类型的值
  104. //Tweener tweener = cube.transform.DOScale(2, 2);
  105. //tweener.OnComplete(() =>
  106. //{
  107. // tweener.Restart();//重复播放此动画
  108. //});
  109. //tweener.SetId(1);
  110.  
  111. #endregion
  112.  
  113. #region 10. SetAutoKill 设置自动销毁
  114. // Tweener tweener = cube.transform.DOScale(2, 2);
  115. // tweener.SetAutoKill();//执行完就销毁
  116. #endregion
  117.  
  118. #region 11.Sequence 队列
  119. //在实际的需求中,一个动画一般都包含对多个物体的操作,那么如何使用DoTween制作这种动画呢?对于一些简单的动画,直接顺序执行多个DoTween语句即可;对于一些复杂的动画,诸如包含延时、动画事件回调、播放音效等的动画,可以利用DoTween的动画队列完成这些操作。
  120. //Sequence sequence = DOTween.Sequence();//创建一个动画(Tweener)队列
  121. //sequence.Append(cube.transform.DOMoveX(6, 3).SetRelative().SetEase(Ease.OutBounce));
  122. //sequence.Append(cube.transform.DOScale(3,3));
  123. //sequence.Append(cube.transform.DOShakeScale(5, 1, 10, 90));//果冻颤动的效果
  124. #endregion
  125.  
  126. #region 12.设置冷却转圈的 Image
  127. ///设置冷却转圈 附带设置 转一圈(回调方法直接实现,不用调用其他的方法)
  128. // image.DOFillAmount(0, 5).SetEase(Ease.Linear).SetLoops(1, LoopType.Yoyo);//从当前到0,时间为5秒
  129.  
  130. #endregion
  131.  
  132. #region
  133. #endregion
  134. #region
  135. #endregion
  136. #region
  137. #endregion
  138.  
  139. }
  140. /// <summary>
  141. /// OnComplete()事件函数执行完所有动画后调用的方法
  142. /// </summary>
  143. public void Onclick()
  144. {
  145. Debug.Log("OnComplete()表示事件函数,当前动画播放完后调用另一个方法,我是参数为需要调用的方法");
  146. }
  147.  
  148. void Update()
  149. {
  150.  
  151. #region 1. DOTween.To() 对变量做一个动画,通过插值的方式修改一个值的变化(updata中赋值show变化)
  152. ///对变量做一个动画,通过插值的方式修改一个值的变化(updata中赋值show变化)
  153. //A. text.text = value.ToString();
  154.  
  155. ///B.1)、将脚本挂在Cube上,并且在Update方法中把myValue的值赋给当前位置,这样便实现了Cube从当前位置移动到了目标位置
  156. // cube.transform.localPosition = myValue;
  157.  
  158. #endregion
  159.  
  160. #region 2. 对话框文字动画,该方法显示打字机效果
  161. ///DOText()
  162. ///对话框文字动画,该方法显示打字机效果
  163. if (Input.GetKeyDown(KeyCode.A))
  164. {
  165. text.DOText("你好我好他好大家好大大所多所多", );//打字机效果
  166. }
  167. #endregion
  168.  
  169. #region 3. 屏幕震动效果,原理是让摄像机进行随机方向的位移,产生震动的假象
  170. ///DOShakePosition()
  171. /// 屏幕震动效果,原理是让摄像机进行随机方向的位移,产生震动的假象
  172. if (Input.GetKeyDown(KeyCode.B))
  173. {
  174. mainCamera.DOShakePosition(0.8f);//表示震动时间是0.8秒,震动方向随机
  175. mainCamera.DOShakePosition(0.8f, new Vector3(, , ));//表示震动时间是0.8秒,震动方向为x和y方向,震动强度为1
  176. }
  177. #endregion
  178.  
  179. #region 4. 颜色渐变和透明度渐变动画
  180. /// DOColor()、DOFade()
  181. ///颜色渐变和透明度渐变动画
  182. if (Input.GetKeyDown(KeyCode.C))
  183. {
  184. text.DOText("你好拿的数据大发发附件", );//打字机
  185. text.DOColor(Color.blue, );//渐变颜色动画
  186. text.DOFade(, );//渐变透明度动画参数为(透明度,渐变时间),其中0为不透明,1为完全透明
  187. }
  188. #endregion
  189.  
  190. }
  191.  
  192. #region 小案例
  193. //private Button myButton;
  194. //private RectTransform taskPanelTransform;//UGUI是通过RectTransform组件来控制移动属性的
  195. //private bool isShow = false;
  196.  
  197. //void Start()
  198. //{
  199. // myButton = transform.Find("Button").GetComponent<Button>();
  200. // taskPanelTransform = transform.Find("Panel").GetComponent<RectTransform>();
  201. // myButton.onClick.AddListener(OnClickBtn);//UGUI中监听按钮的方法
  202. // Tweener tweener = taskPanelTransform.DOLocalMove(new Vector3(0, 0, 0), 1);//修改的是局部坐标,默认动画完后会被销毁
  203. // //Tweener对象保存这个动画的信息,每次调用do类型的方法都会调用一个tweener对象,这个对象使用DoTween来管理
  204. // tweener.SetAutoKill(false);//把SetAutoKill自动销毁设置为false
  205. // tweener.Pause();//让动画在开始时暂停
  206. //}
  207. //public void OnClickBtn()
  208. //{
  209. // // taskPanelTransform.DOMove(new Vector3(0, 0, 0),1);//DOMove()方法是Dotween扩展的方法,表示经过1秒运动到0,0,0的位置(修改的是世界坐标)
  210. // if (isShow == false)
  211. // {
  212. // // taskPanelTransform.DOPlay();//让动画只播放一次
  213. // taskPanelTransform.DOPlayForward();//让动画向前播放
  214. // isShow = true;
  215. // }
  216. // else
  217. // {
  218. // taskPanelTransform.DOPlayBackwards();//倒放动画的方法
  219. // isShow = false;
  220. // }
  221. //}
  222. #endregion
  223. }

以上就是一些基本使用方式,这是个局部,后续有机会再更新!!!

渴望交流!!!

Unity中DoTween的使用的更多相关文章

  1. Unity中DOTween插件的DOTweenPath轨迹移动

    先来看一下DOTweenPath组件的截图 1.Scene View Commands (1)SHIFT+CTRL:add a waypoint        加一个轨迹点 (2)SHIFT+ALT: ...

  2. 关于Unity中DOTween插件的使用(专题一)

    DOTween flash里面的一个概念叫补间动画,DOTween就是干这个事情的. 补间动画:在1秒钟之内从A点移动到B点,在这个之间会把动画补间补好. 当我们安装好DOTween后,它就会提供很多 ...

  3. 【Unity3d游戏开发】游戏中的贝塞尔曲线以及其在Unity中的实现

    RT,马三最近在参与一款足球游戏的开发,其中涉及到足球的各种运动轨迹和路径,比如射门的轨迹,高吊球,香蕉球的轨迹.最早的版本中马三是使用物理引擎加力的方式实现的足球各种运动,后来的版本中使用了根据物理 ...

  4. unity中的动画制作方法

    Unity中的动画制作方法 1.DOTween DoTween在5.0版本中已经用到了,到官网下载好插件之后,然后通过在项目中导入头using DG.Tweening;即可. 一些常用的API函数 D ...

  5. Unity中使用Attribute

    Attribute是c#的语言特性 msdn说明如下: The Attribute class associates predefined system information or user-def ...

  6. 在Unity中使用UGUI修改Mesh绘制几何图形

    在商店看到这样一个例子,表示很有兴趣,他们说是用UGUI做的.我想,像这种可以随便变形的图形,我第一个就想到了网格变形. 做法1: 细心的朋友应该会发现,每个UGUI可见元素,都有一个‘Canvas ...

  7. Unity中使用WebView

    Unity中使用WebView @(设计) 需求,最近游戏中需要引入H5直播页面和更新比较频繁的赛事页面,需求包括:加密传参数.和Unity交互,在Unity框架下其实有几种方案: 内置函数Appli ...

  8. Unity中创建二维码

    在网络上发现了一个可以把字符串转换成二维码的dll,但是我们要怎么使用他呢.不废话,直接进入主题. 用到的引用 using UnityEngine;using ZXing;using ZXing.Qr ...

  9. 在Unity中创建可远程加载的.unity3d包

    在一个Unity项目中,发布包本身不一定要包括所有的Asset(译为资产或组件),其它的部分可以单独发布为.unity3d,再由程序从本地/远程加载执行,这部分不在本文讨论范围.虽然Unity并没有直 ...

随机推荐

  1. (12)centos7 环境变量配置

    export 一个变量的设置一般只在当前环境有效,export命令可以用于传递一个或多个变量的值到任何后续脚本.export可新增.修改或删除环境变量,供后续执行的程序使用.export的效力限于该次 ...

  2. 5、通过Appium Desktop实现页面元素定位

    之前我们已经安装了Appium Desktop,下面就让我们使用Appium Desktop实现页面元素定位 1.首先我们打开Appium Desktop,进入如下界面,点击Start Server ...

  3. 一文看懂SATA和NVMe固态硬盘用起来有何区别?

    本文摘自:https://www.sohu.com/a/203688929_615464 NVMe固态硬盘正在逐步扩张,而包括三星.东芝在内的大厂并没有停止SATA固态硬盘新品的研发.到底那种固态硬盘 ...

  4. 实验报告&总结

    Java实验报告 班级计科二班 学号 20188429 姓名 罗璇哲 完成时间 评分等级 实验三 String类的应用 一. 实验目的 (1) 掌握类String类的使用: (2) 学会使用JDK帮助 ...

  5. 通过字体代替图片优化,如何使用Font Awesome字体图标?

    博客搬迁,给你带来的不便敬请谅解! http://www.suanliutudousi.com/2017/10/17/%E9%80%9A%E8%BF%87%E5%AD%97%E4%BD%93%E4%B ...

  6. Tomcat集群session复制与Oracle的坑。。

    问题描述 公司某个系统使用了tomcat自带的集群session复制功能,然后后报了一个oracle驱动包里面的连接不能被序列化的异常. 01-Nov-2017 16:45:26.653 SEVERE ...

  7. 高程(三)--- Date

    Date类型使用UTC(国际协调时间)1970年1月1日0时0分始到现在的毫秒数来保存日期的. 所以当我们知道毫秒数时,还需要通过计算才能获取年月日时分秒. 一.获取时间对象 Date提供了2个方法: ...

  8. XX Russia Team Open, High School Programming Contest St Petersburg, Barnaul, Tbilisi, Almaty, Kremenchug, November 30, 2019

    ContestLink easy: AFI medium-easy: BDH medium: CGKL ???: EJ A. Attractive Flowers 签到. B. Blocking th ...

  9. Apache版hadoop编译

    前言  做为大数据入门的基础,hadoop是每个大数据开发人员几乎不可避免的基础,目前hadoop已经发展到3.x.x版本,但当前企业使用的主流还是2.x.x版本,hadoop官网提供了编译后的had ...

  10. 2019-5-16-WPF-光标初始化的时候-temp-文件夹满了无法创建

    title author date CreateTime categories WPF 光标初始化的时候 temp 文件夹满了无法创建 lindexi 2019-05-16 19:16:27 +080 ...