企业首次建设网站的策划方案,企业网站制作官网,网站空间商拿不回数据,旅游平台网站建设方案本文中大部分内容学习来自DOTween官方文档 文章目录 什么是DOTween#xff1f;DOSetOnTweenerSequenceTweenNested tween 初始化使用方式 什么是DOTween#xff1f;
DOTween是一个动画插件#xff0c;Tween是补间的意思。这个插件以下简称DOT#xff0c;DOT很方便使用DOSetOnTweenerSequenceTweenNested tween 初始化使用方式 什么是DOTween
DOTween是一个动画插件Tween是补间的意思。这个插件以下简称DOTDOT很方便使用只需要记住四个类三个方法
四个类
TweenerSequenceTweenNested Tween
三个方法
DOSetOn DO
DOT中的方法名是很统一的因此我们从前缀就可以大概知道这个方法是干什么的怎么用的。
DO代表了实现动画的方法它是调用tween补间动画的快捷方法的前缀我们可以直接从想要应用动画的对象的后面比如物体transform或者材质texture文字text颜色color等等点出想要使用补间动画的DO方法
transform.DOMoveX(100, 1);// 只需在物体的transform后面使用DOMoveX方法就直接实现了物体在x轴上的移动
transform.DORestart();
DOTween.Play();Set
Set为前缀的方法用于改变一个tween的设置通常Set方法可以为Tween以及其派生类进行设置Tween后面可以无限追加set。
var tweenerA buttonA.DOMove(new Vector3(700, 200, 0), 5)
.SetLoops(3,LoopType.Yoyo).SetSpeedBased();
myTween.SetLoops(4, LoopType.Yoyo).SetSpeedBased();
// 展示一下无限set
myTween.SetSpeedBased().SetSpeedBased().SetSpeedBased().SetSpeedBased();On
On为前缀的方法代表了可被调用的补间动画的回调在补件动画的对应时刻会触发这些回调并调用其内部的函数委托。
官方示例
// 委托回调也可以无限调用
myTween.OnStart(myStartFunction).OnComplete(myCompleteFunction);调度单个匿名函数
tweener.OnStart(() { Debug.Log(动画开始); });
// 在Tweener开始时调用委托调度DOTween提供的官方委托类型TweenCallback
TweenCallback tweenCallback new TweenCallback(() { Debug.Log(动画开始); });
tweenCallback () { Debug.Log(我是TweenCallback委托); };
tweener.OnStart(tweenCallback);
// tweener动画开始时调度委托
// 输出动画开始
// 我是TweenCallback委托和Action一样TweenCallback是可接受泛型参数的无返回值委托 Tweener
Tweener 补间用于控制补间插值和动画的类大部分时候我们需要操纵的就是Tweener类
Tweener tweener;
private void Start()
{tweener transform.DOMove(new Vector3(500, 500, 0), 5);var twe transform.DOMove(new Vector3(500, 500, 0), 5);Debug.Log(tweener.GetType());Debug.Log(twe.GetType());
}通过检查代码以及获取类型后发现DO方法返回的类型是TweenerCore类型它继承于Tweener因此根据里氏替换原则Tweener可转换为TweenerCore。 Sequence
Sequence 序列一种特殊的补间它不是控制某个值而是控制其他补间并将它们作为一个序列进行动画处理。
private void Start()
{tweener transform.DOMove(new Vector3(500, 500, 0), 5);var tweenerA buttonA.DOMove(new Vector3(700, 200, 0), 5);var seq DOTween.Sequence();seq.Append(tweener);seq.Append(tweenerA);
}类似于委托Sequence可以顺序地执行补间动画当然也可以在某个时间节点来设定定时执行。
var s DOTween.Sequence();
var Cube1RunTime 1.0f;
var Cube2RunTime 1.0f;
s.Append(this.m_Trans.DOLocalMoveX(2.0f, Cube1RunTime));
s.Append(this.m_Trans.DOLocalMoveX(-3.42f, Cube1RunTime));
//在队列动画开始后的Cube1RunTime秒后播放
s.Insert(Cube1RunTime, this.m_Other.DOLocalMoveY(2.5f, Cube2RunTime));具体的用法也将会在未来介绍。 Tween
TweenTweener和Sequence的统称从代码上看它是Tweener和Sequence的基类也是DOTween这个插件最基础的类 Nested tween
Nested Tween嵌套补间Sequence中包含的补间。代码中看不到应该是Sequence内部的Tween的别名。 初始化
在使用DOTween之前需要进行初始化最简单的初始化方式是在导入后进行如下图所示 当然也可以用代码进行默认的初始化而官方推荐如果想要自己设置初始化可以使用下列代码
// EXAMPLE A: initialize with the preferences set in DOTweens Utility Panel
// 默认使用推荐配置初始化
DOTween.Init();
// EXAMPLE B: initialize with custom settings, and set capacities immediately
// 自定义设定初始化
DOTween.Init(true, true, LogBehaviour.Verbose).SetCapacity(200, 10);// recycleAllByDefault true自动回收如果Tween被OnKill时不是销毁而会被回收到池中不允许GC对他们销毁而有可能被再次调用重生
// useSafeMode true安全模式补间有可能变慢但换来的是更安全的操作
// LogBehaviour 日志行为根据选择模式设置日志
public static IDOTweenInit Init(bool? recycleAllByDefault null, bool? useSafeMode null, LogBehaviour? logBehaviour null);使用方式
使用Tween时有两种调用方法一种是我们介绍过的DO前缀方法这类方法是对完整方法的快捷调用可以直接设定在调用的对象后也不需要指定调用委托:
transform.DOMove(new Vector3(2,3,4), 1);
rigidbody.DOMove(new Vector3(2,3,4), 1);
material.DOColor(Color.green, 1);使用DO方法除了从初始值补间到设定值之外如果我们加上From()方法就可以从设定值补间到初始值
transform.DOMove(new Vector3(2,3,4), 1).From();
rigidbody.DOMove(new Vector3(2,3,4), 1).From();
material.DOColor(Color.green, 1).From();除了快捷方法之外还有一种完整方法的使用
// 使用静态方法定义一个Tween
// 四个参数分别是gettersettertoduration
// gettersetter是泛型委托它们并不支持所有的泛型定义里只定义了一部分的类型
// getter委托用于接受初始值的类型
// setter委托用于接受初始值并作为入参
// to参数代表了最终值
// duration参数代表了从初始值补间到最终值的时间
// Tween a Vector3 called myVector to 3,4,8 in 1 second
DOTween.To(() myVector, x myVector x, new Vector3(3,4,8), 1);
// Tween a float called myFloat to 52 in 1 second
DOTween.To(() myFloat, x myFloat x, 52, 1);DOTween.TO()方法并不直接应用补间而是对接受类型的数据进行从初始值到最终值的随时间变化的补间赋值。例如
Vector3 transform Vector3.zero;
DOTween.To(() transform, x transform x, new Vector3(3,4,8), 1);那么在一秒内transform会从(0,0,0)变化到(3,4,8)但是因为没有set物体的transform因此物体本身是不动的。 以上就是DOTween的一些基础用法许多方法相信大家看到函数名就知道是什么意思了DOTween提供了许多补间方法高级点的用法就很牛了甚至还能对接AVpro 摘自Unity DOTween.To