Unity中DoTween的使用
在Unity手游开发中,经常用到插值运算,我们可以使用Mathf.Lerp自行去实现效果,但是使用插件提高了我们的开发效率,这里归结一下DoTween的基本使用方式以及效果说明:
直接代码:
using DG.Tweening;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class OwnTextDoTween : MonoBehaviour {
//DoTween.To();
public int value;
public GameObject cube;
Vector3 myValue = new Vector3(, , ); //打字机
//text.DoText()
public Text text; //屏幕震动效果
// mainCamera.DOShakePosition()
public Camera mainCamera; //冷却Image
public Image image; public float start = ;//fillAmount最大值
public float end = ;//fillAmount最小值 void Start()
{
#region 1. DOTween.To() 对变量做一个动画,通过插值的方式修改一个值的变化
///对变量做一个动画,通过插值的方式修改一个值的变化
//A. 用两秒的时间从0变化到50 //()=> value,表示返回值为value,x=>value=x,表示将系统计算好的x值(当前值到目标值的插值)赋给value,50,表示达到的目标值,5表示所需时间 // value = 0;
// DOTween.To(() => value, x => value =x, 50,5); //B. 控制Cube或UI面板的动画 ///1)、将脚本挂在Cube上,并且在Update方法中把myValue的值赋给当前位置,这样便实现了Cube从当前位置移动到了目标位置
///用两秒的时间从0,0,0变化到10,10,10
///()=> myValue,表示返回值为myValue,x=>myValue=x,表示将系统计算好的x值(当前值到目标值的插值)赋给myValue,new Vector3(10,10,10),表示达到的目标值,5表示所需时间 // DOTween.To(() => myValue, x => myValue = x, new Vector3(10, 10, 10), 5); #endregion #region 5. FromTween:表示让物体从目标位置移动到当前位置,即等同于播放反向的移动动画 //1. DOMoveX()、DOMoveY()、DOMoveZ() ///A. 如果只是让物体的单个坐标移动,可直接用DOMoveX()、DOMoveY()、DOMoveZ()方法控制移动动画,参数为(目标位置,所需时间)
// Tweener tweer =cube.transform.DOMoveX(10, 3); ///B. DoTween中任何调用动画的方法后面都可以添加From(),表示从目标位置移动到当前位置
// tweer.From(); ///C. From(true)表示目标坐标等于当前坐标加上当前目标坐标,如果物体当前坐标为2,那么这行代码表示从目标位置(10+ 2),经过1秒,移动到当前位置(2)
/// tweer.From(true); //2. DOLocalMoveX()、DOLocalMoveY()、DOLocalMoveZ() /// 表示局部坐标的位移动画方法。DoTween中所有对动画的设置都是通过对象Tweener来完成的 // Tweener tweener = cube.transform.DOLocalMoveX(10, 2f); #endregion #region 6.SetEase() 设置缓冲类型 通过次方法来设置动画的曲线,曲线动画效果很多,在此仅做三个案例,其他的可以在系统给的枚举类型中找 // Tweener teweer = cube.transform.DOMoveX(10, 2);
//A.Ease.InBack
/// 表示物体先向后一点,再向前播放(相当于蓄力起跑)
// teweer.SetEase(Ease.InBack); //B.Ease.InBounce ///相当于一个多次蓄力进入的效果
// teweer.SetEase(Ease.InBounce); //C.Ease.OutBounce /// 相当于一个落地之后的弹跳效果(惯性撞击反弹(物理属性))
// teweer.SetEase(Ease.OutBounce); #endregion #region 7.SetLoops()可以通过此方法设置动画循环的次数
// Tweener twer = cube.transform.DOMoveX(10, 3); //表示动画的循环次数
//twer.SetLoops(2);//循环两次 #endregion #region 8.OnComplete()表示事件函数,当前动画播放完后调用另一个方法,参数为需要调用的方法
//Tweener twer = cube.transform.DOMoveX(10, 3);//DoTween中所有对动画的设置都是通过对象Tweener来完成的
//twer.SetEase(Ease.OutBounce);//相当于一个落地之后弹跳的效果
//twer.SetLoops(2);//表示动画的循环次数
//twer.OnComplete(Onclick);//表示当前动画播放完之后调用的事件,相当于一个注册方法,参数为需要注册的方法即为Onclick
#endregion #region 9. SetId 设置ID 可以只用 int、string、object等类型的值
//Tweener tweener = cube.transform.DOScale(2, 2);
//tweener.OnComplete(() =>
//{
// tweener.Restart();//重复播放此动画
//});
//tweener.SetId(1); #endregion #region 10. SetAutoKill 设置自动销毁
// Tweener tweener = cube.transform.DOScale(2, 2);
// tweener.SetAutoKill();//执行完就销毁
#endregion #region 11.Sequence 队列
//在实际的需求中,一个动画一般都包含对多个物体的操作,那么如何使用DoTween制作这种动画呢?对于一些简单的动画,直接顺序执行多个DoTween语句即可;对于一些复杂的动画,诸如包含延时、动画事件回调、播放音效等的动画,可以利用DoTween的动画队列完成这些操作。
//Sequence sequence = DOTween.Sequence();//创建一个动画(Tweener)队列
//sequence.Append(cube.transform.DOMoveX(6, 3).SetRelative().SetEase(Ease.OutBounce));
//sequence.Append(cube.transform.DOScale(3,3));
//sequence.Append(cube.transform.DOShakeScale(5, 1, 10, 90));//果冻颤动的效果
#endregion #region 12.设置冷却转圈的 Image
///设置冷却转圈 附带设置 转一圈(回调方法直接实现,不用调用其他的方法)
// image.DOFillAmount(0, 5).SetEase(Ease.Linear).SetLoops(1, LoopType.Yoyo);//从当前到0,时间为5秒 #endregion #region
#endregion
#region
#endregion
#region
#endregion }
/// <summary>
/// OnComplete()事件函数执行完所有动画后调用的方法
/// </summary>
public void Onclick()
{
Debug.Log("OnComplete()表示事件函数,当前动画播放完后调用另一个方法,我是参数为需要调用的方法");
} void Update()
{ #region 1. DOTween.To() 对变量做一个动画,通过插值的方式修改一个值的变化(updata中赋值show变化)
///对变量做一个动画,通过插值的方式修改一个值的变化(updata中赋值show变化)
//A. text.text = value.ToString(); ///B.1)、将脚本挂在Cube上,并且在Update方法中把myValue的值赋给当前位置,这样便实现了Cube从当前位置移动到了目标位置
// cube.transform.localPosition = myValue; #endregion #region 2. 对话框文字动画,该方法显示打字机效果
///DOText()
///对话框文字动画,该方法显示打字机效果
if (Input.GetKeyDown(KeyCode.A))
{
text.DOText("你好我好他好大家好大大所多所多", );//打字机效果
}
#endregion #region 3. 屏幕震动效果,原理是让摄像机进行随机方向的位移,产生震动的假象
///DOShakePosition()
/// 屏幕震动效果,原理是让摄像机进行随机方向的位移,产生震动的假象
if (Input.GetKeyDown(KeyCode.B))
{
mainCamera.DOShakePosition(0.8f);//表示震动时间是0.8秒,震动方向随机
mainCamera.DOShakePosition(0.8f, new Vector3(, , ));//表示震动时间是0.8秒,震动方向为x和y方向,震动强度为1
}
#endregion #region 4. 颜色渐变和透明度渐变动画
/// DOColor()、DOFade()
///颜色渐变和透明度渐变动画
if (Input.GetKeyDown(KeyCode.C))
{
text.DOText("你好拿的数据大发发附件", );//打字机
text.DOColor(Color.blue, );//渐变颜色动画
text.DOFade(, );//渐变透明度动画参数为(透明度,渐变时间),其中0为不透明,1为完全透明
}
#endregion } #region 小案例
//private Button myButton;
//private RectTransform taskPanelTransform;//UGUI是通过RectTransform组件来控制移动属性的
//private bool isShow = false; //void Start()
//{
// myButton = transform.Find("Button").GetComponent<Button>();
// taskPanelTransform = transform.Find("Panel").GetComponent<RectTransform>();
// myButton.onClick.AddListener(OnClickBtn);//UGUI中监听按钮的方法
// Tweener tweener = taskPanelTransform.DOLocalMove(new Vector3(0, 0, 0), 1);//修改的是局部坐标,默认动画完后会被销毁
// //Tweener对象保存这个动画的信息,每次调用do类型的方法都会调用一个tweener对象,这个对象使用DoTween来管理
// tweener.SetAutoKill(false);//把SetAutoKill自动销毁设置为false
// tweener.Pause();//让动画在开始时暂停
//}
//public void OnClickBtn()
//{
// // taskPanelTransform.DOMove(new Vector3(0, 0, 0),1);//DOMove()方法是Dotween扩展的方法,表示经过1秒运动到0,0,0的位置(修改的是世界坐标)
// if (isShow == false)
// {
// // taskPanelTransform.DOPlay();//让动画只播放一次
// taskPanelTransform.DOPlayForward();//让动画向前播放
// isShow = true;
// }
// else
// {
// taskPanelTransform.DOPlayBackwards();//倒放动画的方法
// isShow = false;
// }
//}
#endregion
}
以上就是一些基本使用方式,这是个局部,后续有机会再更新!!!
渴望交流!!!
Unity中DoTween的使用的更多相关文章
- Unity中DOTween插件的DOTweenPath轨迹移动
先来看一下DOTweenPath组件的截图 1.Scene View Commands (1)SHIFT+CTRL:add a waypoint 加一个轨迹点 (2)SHIFT+ALT: ...
- 关于Unity中DOTween插件的使用(专题一)
DOTween flash里面的一个概念叫补间动画,DOTween就是干这个事情的. 补间动画:在1秒钟之内从A点移动到B点,在这个之间会把动画补间补好. 当我们安装好DOTween后,它就会提供很多 ...
- 【Unity3d游戏开发】游戏中的贝塞尔曲线以及其在Unity中的实现
RT,马三最近在参与一款足球游戏的开发,其中涉及到足球的各种运动轨迹和路径,比如射门的轨迹,高吊球,香蕉球的轨迹.最早的版本中马三是使用物理引擎加力的方式实现的足球各种运动,后来的版本中使用了根据物理 ...
- unity中的动画制作方法
Unity中的动画制作方法 1.DOTween DoTween在5.0版本中已经用到了,到官网下载好插件之后,然后通过在项目中导入头using DG.Tweening;即可. 一些常用的API函数 D ...
- Unity中使用Attribute
Attribute是c#的语言特性 msdn说明如下: The Attribute class associates predefined system information or user-def ...
- 在Unity中使用UGUI修改Mesh绘制几何图形
在商店看到这样一个例子,表示很有兴趣,他们说是用UGUI做的.我想,像这种可以随便变形的图形,我第一个就想到了网格变形. 做法1: 细心的朋友应该会发现,每个UGUI可见元素,都有一个‘Canvas ...
- Unity中使用WebView
Unity中使用WebView @(设计) 需求,最近游戏中需要引入H5直播页面和更新比较频繁的赛事页面,需求包括:加密传参数.和Unity交互,在Unity框架下其实有几种方案: 内置函数Appli ...
- Unity中创建二维码
在网络上发现了一个可以把字符串转换成二维码的dll,但是我们要怎么使用他呢.不废话,直接进入主题. 用到的引用 using UnityEngine;using ZXing;using ZXing.Qr ...
- 在Unity中创建可远程加载的.unity3d包
在一个Unity项目中,发布包本身不一定要包括所有的Asset(译为资产或组件),其它的部分可以单独发布为.unity3d,再由程序从本地/远程加载执行,这部分不在本文讨论范围.虽然Unity并没有直 ...
随机推荐
- 关于命令ride.py打不开RF,而是打开pycharm编辑器问题解决思路
自从用RF工具做自动化测试以来,碰到过三次标题中的问题.头两次问别人解决了,第三次就自己动手解决,并记录下来. 第一次碰到这个问题,以为问题很小,没有放在心上,同事帮忙弄出来了. 别人帮忙弄的,记忆力 ...
- Java数据结构----集合
Java的集合可以分为两类, 第一类是以数组为代表,这类集合可以描述线性表类型的数据结构,以Collection为基类,其中自己用过或者了解的有 实现List接口的类:LinkedList,Array ...
- C++——类
1.类和结构体,只有的默认访问权限的区别 2.类内不能定义和类外类型名相同的类型名.为什么?typedef机制? typedef double money; class Account { priva ...
- 分析由Python编写的大型项目(Volatility和Cuckoo)
之前使用python都是用来做一些简单的脚本,本质上和bat批处理文件没有区别. 但是Python是可以用来编写大型的项目的,比如: Volatility:https://code.google.co ...
- leetcode 1041——困于环中的机器人
描述: 在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方.机器人可以接受下列三条指令之一: "G":直走 1 个单位 "L":左转 90 度 &quo ...
- animation和keyframes
animation:name duration timing-function delay iteration-count direction; name:名字 duration: 持续时间 timi ...
- ajax图片上传
使用ajaxfileupload.js插件 html代码: <p> <label>ajax上传</label> <input type="file& ...
- [已解决]报错JSONDecodeError
报错: 解决:
- VMware1设备与主机共享网络的问题
问题的提出: 最近需要用到VMware1设备来配置网络,顺便将VMware1设备与主机进行共享网络,这样master就能直接访问网络了,但是原本以为直接在wlan设备上选择网络共享就行了,但是却没法收 ...
- JFinal教程
自学JFinal总结 前言:每次搭建ssm框架时,就像搬家一样,非常繁杂,并且还容易出错.正好了解到JFinal极简,无需配置即可使用,在这里记录下学习的过程. 感谢:非常感谢此网站发布的教程,非常详 ...