欢迎加入光光的奇妙冒险,我是你们的煎饼光子老师。
这节课我们来挑战一下速通Unity中非常好用的DOTween插件
首先是插件的安装
在Unity的资源商店中搜索DOTween,选择Free,也就是免费的版本即可,可以满足我们大部分的需求
然后选择添加至我的资源
如果大家此时已经打开了Unity,可以点击在Unity中打开,这样回到Unity,就会直接打开资源下载界面
或者在Unity中按照以下图片的指示下载资源
下载完成后就可以选择Import(导入)
之后会出现这样一个面板,大家点击这个Open DOTween。。。就可以
接下来的这个面板可以进行一些设置,但可以选择不改,因为默认的就已经能满足我们的大多数需求
然后点击Setup DOTween。。。
等待一会儿,就会出现下面这个窗口
直接点击右上角的X即可,不要点击Apply也不要点击Cancel
至此DOTween已经安装成功
接下来介绍下DOTween中常用的几个API
其实还是非常简单的,大家跟着敲上几遍,再简单消化下就OK了
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;//引用命名空间
using UnityEngine.UI;
//这个脚本会挂在一个2D游戏中的方块上
public class DOTweenTest : MonoBehaviour
{
public Text text2;//打字机效果会使用的文本
private void Start()
{
//注意这三种API:
//Do开头:执行,参数:1.目标值 2.执行时间
//Set开头:设置状态
//From:归位
//移动到世界坐标系下的(4,2)位置,时间为1秒
transform.DOMove(new Vector2(4,2),1f);
//移动到本地坐标系下的(4,2)位置,时间为1秒
transform.DOLocalMove(new Vector2(4,2),1f);
//SetRelative:参数里的位置不再是世界坐标系的目标位置,而是相对于当前位置的偏移
//例如这里的意思就是在当前位置的基础上加上(4,2)的偏移
transform.DOMove(new Vector2(4,2),1f).SetRelative();
//SetEase:设置动画的变化
transform.DOMove(new Vector2(4,2),1f).SetEase(Ease.InOutSine);
//移动到目标位置后,归位
transform.DOMove(new Vector2(4,2),1f).From();
//SetLoops循环
//LoopType.Yoyo为来回循环,
//LoopType.Restart为每次执行完毕后会返回原点,
//LoopType.Incremental为递增,会朝着目标方向不返回的前进指定次数。
//第一个参数次数为-1时则为无限循环
transform.DOMove(new Vector2(4,2),1f).SetLoops(-1, LoopType.Yoyo);
transform.DOMove(new Vector2(4,2),1f).SetLoops(-1, LoopType.Restart);
transform.DOMove(new Vector2(4,2),1f).SetLoops(-1, LoopType.Incremental);
}
private void Update()
{
if(Input.GetKeyDown(KeyCode.Space))
{
//注意:打字机效果只适用于老版text
//打字机效果实现后执行的回调函数
//在这个回调中,我们添加了一个Sequence
text2.DOText("Hello World!",2f).OnComplete(()=>
{
text2.DOColor(Color.red, 0.2f);
//Sequence可以看作是一个存放各种DOTween操作的列表
//通过Append在Sequence中添加操作
//然后Sequence会依次执行里面的内容
//使用Sequence,要先new一个Sequence
Sequence mySequence = DOTween.Sequence();
mySequence.Append(text2.DOColor(Color.black, 0.1f));
//在Sequence也可以使用回调函数
//例如:插入在颜色变黑操作后的回调函数
mySequence.AppendCallback(()=>{
print("颜色变黑后回调");
});
mySequence.Append(text2.DOColor(Color.red, 0.1f));
//例如:插入在颜色变红操作后的回调函数
mySequence.AppendCallback(()=>{
print("颜色变红后回调");
});
//注意:添加到Sequence中的操作,如果有循环,没有效果
//但可以给Sequence设置Loops
mySequence.SetLoops(-1, LoopType.Yoyo);
});
}
}
}
在上面的API中,有一个使用到了SetEase,这其实是一种变化曲线,应用后,你的DOTween效果就会像对应曲线那样变化
下面这个网站中就列举了所有的曲线变化,大家可以点击查看
到这里为止,本期的速通挑战就结束了,相信大家已经对DOTween建立了一个基本的理解。
当然它的内容还远远不止如此,像是改变材质,与UI控件结合这些操作都可以在DOTween的官方网站的手册中查看。
最后,希望能看到大家用DOTween做出各种奇妙的效果。
我是煎饼光子老师,下期再见!