Unity常用插件之DoTween(一)

来源:互联网 发布:unity3d awake 编辑:程序博客网 时间:2024/05/29 02:28

现如今大多数Unity中的物体移动或者ui变化我都会使用dotween来做,我毫不怀疑没有这样一个插件我的工作效率会变得更低。

这几篇笔记主要是通过学习DoTween官方提供的Example和粗略的阅读文档来记录下如何使用Dotween的常用功能。



这个就是dotween官方提供的Example,有五个场景,先从第一个看起。

Basics:

它的场景是这样的


运行后场景中的四个cube会分别进行移动,其中紫色除了进行移动外,颜色也会发生循环的变化。


如何使用Dotween让物体动起来?

可以通过挂组件和写脚本两种方式,挂组件或许更快,但数量多了之后就难以控制,所以除了刚开始,我通常更喜欢用脚本控制。

脚本的书写方式

Dotween文档上说明,There are 3 ways to create a Tweener: the generic waythe shortcuts way and additional generic ways.

我通常使用的是the shortcuts way。我觉得应该大多数人都会选择用这种方式吧。

它的画风是这样的:

transform.DOMove(new Vector3(2,3,4), 1);rigidbody.DOMove(new Vector3(2,3,4), 1);material.DOColor(Color.green, 1);
其实很好理解,希望对某个物体进行操作,就获取它对应的组件然后调用dotween函数,比如说移动缩放旋转通常是获取transform组件后调用,改变颜色或让其fade通常是获取材质后调用。

这在文档中都有很好的说明:http://dotween.demigiant.com/documentation.php


回到example的basics场景中。


这是新建的一个场景,首先实现第一个 ,让一个cube移动到世界坐标0,4,0;

transformTo.DOMove(new Vector3(0, 4, 0), 1f);
transformTo是指向这个cube的transform的变量

public Transform transformTo, transformFrom, transformRelative, transformColor;
注意使用dotween时需要先引入命名空间

using DG.Tweening;


DoMove方法中的参数一个是终点坐标,一个是动画周期的时间。就是说之前做的是花1秒时间从当前位置移动到世界坐标(0,4,0);

那如果我希望的是从某个位置移动到当前位置呢,比如说将上面这个改成花一秒时间从(0,4,0)移动到当前位置

transformFrom.DOMove(new Vector3(0, 4, 0), 1f).From();
在后面加上.From()就行了。

如果我并不是想让我的cube前往某个固定的世界坐标位置,而只是想让它做一个相对于当前坐标的移动,比如说向上移动4,那么可以这么写

transformRelative.DOMove(new Vector3(0, 4, 0), 1f).SetRelative();


改变颜色

在官方的案例中,第四个cube又进行了位移又改变了颜色,其实位移就是上面的那行代码只不过换一个指定对象,

说说颜色改变,前面提过要对物体的什么进行操作,就要获取对应的组件,这里改变颜色,首先要获取它的material

transformColor.GetComponent<Renderer>().material.DOColor(Color.red, 1f);
如何让动画循环,案例中的颜色改变是循环进行的,想让某个动画循环只需要在后面接着写

transformColor.GetComponent<Renderer>().material.DOColor(Color.red, 1f).SetLoops(-1, LoopType.Yoyo);
SetLoops的参数一个指定了循环次数,一个指定的循环方式

-1代表的是无限的循环,循环方式有三种,默认是restart,也可以指定为Yoyo或Incremental







原创粉丝点击