StoneのBLOG

生活这种事情,从来都是自我陶醉

0%

Unity-DoTween-曲线的魅力

因为在使用DoTween的时候,有许多我不知道的用法,关于曲线的使用和一些很重要的名词。这篇文章主要用来记录这些曲线的操作和使用。

首先是曲线的基础:

虽然是随便搜也能搜到,暂且记下来吧。

ease

相当实用的网站,大佬教我搜ease的时候搜到的。

DoTween

其实应该把这个放到Unity-插件的内容里的,感觉和曲线息息相关的插件,就放到了这里。

DoPath/DoLocalPath

这个是我所需要的,我使用的地方。

关于这个插件有很多的使用,有免费版和Pro版。我看到有人整理的我就先上个链接
-HowTo_DOTween.md

我自己的话充其量用了上面的路径功能,换了换set ease的条件。还有一些RX的使用,Onstart(),OnComplete()

DoTween停止操作

unity的Scene之间移动的时候需要停止DoTween的动作,当然tween的本体在切换Scene的时候不会被destory的。于是就出现了一个奇怪的现象。

Tween的object把setActive(false)执行之后仍然继续活动

这就奇了怪了,我的猜测是在Unity中跟gameobject相关的操作都是在主线程中运行,但是Tween的操作是子线程,但是反过来一想又不太对,Tween操作transform的移动不应该是主线程中吗,反正不太清楚,出现了这个问题,我的解决方案是:

先执行Complete(),再setActive(false)

这里有一个疑问,我在使用Complete之前有尝试过Kill这个方法,但是,反正就是未能解决我遇到的问题,保险起见我是在执行Kill之前又添加了Complete的操作,虽然感觉不太好,但还是那么做了…

参考文章:DOTweenをふわっとまとめてみた

Unity DoTween Shortcut

DOTween includes shortcuts for some known Unity objects, like Transform, Rigidbody and Material. You can start a tween directly from a reference to these objects (which will also automatically set the object itself as the tween target), like:

1
2
3
4
5
6
7
> transform.DOMove(new Vector3(2,3,4), 1);
> rigidbody.DOMove(new Vector3(2,3,4), 1);
> material.DOColor(Color.green, 1);

Dotween提供的这种快捷的方式很好理解,但是这种方式的实现就很厉害,值得学习。比如说这个transform的DOMove方法的shortcut实现:
```csharp
public static TweenerCore<Vector3, Vector3, VectorOptions> DoMove(this Transform target, Vector3 endValue, float duration, bool snapping = false);

C#该学的东西还是有很多很多啊,学无止境啊。