Hotween与itween类似,也是一个插值插件,都是对位移,缩放,旋转,颜色等数值进行插值,各有各的优势。如果做一般常见的动画建议使用Hotween,但是遗憾的是Hotween不支持路径动画,如果支持就完美了。
官方网站:http://www.holoville.com/hotween/index.html
根据Hotween官方网站介绍,hotween是运行快,类型安全和面向对象的unity插件,兼容unity所有的脚本语言,并且在官方网站上有和unity对比的demo(http://www.holoville.com/hotween/testRun.html),一般情况下两者性能上的对比不是太明显,但是当游戏对象多的时候hotween的优势就显现出来了. 这也是我选择hotween的原因,下面介绍hotween在unity中的使用.
一、安装
首先去http://www.holoville.com/hotween/download.html下载hotween插件,然后把hotween解压到Assets/Plugins目录下(Plugins文件夹需要自己创建),节点结构大致是这样子的;
开始编写代码使用.
首先要在类前面引用hotween的命名空间
2 |
using System.Collections;
|
3 |
using Holoville.HOTween;
|
4 |
public class HotweenTest : MonoBehaviour {
|
二、Hotween的基本使用方法
ok,引入完毕,然后在第一个例子中我会使用Transform对象,但是要记住一点的是hotween只能对物体的任何非静态的公有属性或者字段做动画.
Example1:
7 |
HOTween.To(gameObject.transform, 1, "position" , new Vector3(10,20,30));
|
当然大多数情况下,我们做插值动画这些参数控制是远远不够的,那就需要添加更多的控制参数,
Example2:
1 |
HOTween.To(transform,2, new TweenParms().Prop( "position" , new Vector3(10,20,30)).Prop( "rotation" , new Vector3(0,720,0)).Prop( "localScale" , new Vector3(10,10,10)).Ease(EaseType.EaseInBack).Loops(3,LoopType.Yoyo).Delay(1));
|
代码看起来很长,不是很好理解,那我们换一种方式:
1 |
TweenParms parms = new TweenParms();
|
2 |
parms.Prop( "position" , new Vector3(10,20,30));
|
3 |
parms.Prop( "rotation" , new Vector3(0,720,0));
|
4 |
parms.Prop( "localScale" , new Vector3(10,10,10));
|
5 |
parms.Ease(EaseType.EaseInBack);
|
6 |
parms.Loops(3,LoopType.Yoyo);
|
8 |
HOTween.To(myGameObject.transform, 2, parms ); |
这两种写法的动画效果是一模一样的,其中loops方法我觉得是做的比较好的,可以设置循环次数,itween是没有的
三、HOTween Sequence 动画队列
有时候我们需要播放一系列的动画,比如说:移动到远点–>旋转180–>放大2倍。。。
这时候就可以考虑使用hotween的队列动画.
01 |
Sequence mySequence = new Sequence( new SequenceParms().Loops(3,LoopType.Yoyo));
|
04 |
mySequence.Append(HOTween.To(myGameObject1.transform, 1, new TweenParms().Prop( "position" , new Vector3(0,0,0)).Ease(EaseType.EaseOutBounce)));
|
07 |
mySequence.Prepend(HOTween.To(myGameObject2.transform, 1, new TweenParms().Prop( "position" , new Vector3(10,20,30)).Prop( "rotation" , new Vector3(0,720,0)).Prop( "localScale" , new Vector3(4,4,4)).Ease(EaseType.EaseInElastic)));
|
10 |
mySequence.Insert(1, HOTween.To(myGameObject3.transform, 1, new TweenParms().Prop( "position" , new Vector3(10,20,30)).Prop( "rotation" , new Vector3(0,720,0)).Prop( "localScale" , new Vector3(4,4,4)).Ease(EaseType.EaseOutQuad)));
|
14 |
mySequence.PlayForward();
|
15 |
mySequence.PlayBackwards();
|
四、回调函数 Call back
不带参数的回调可以这样写:
1 |
HOTween.To(transform, 1, new TweenParms().Prop( "position" , new Vector3(10,20,30)).OnComplete(completeCallBack()));
|
3 |
private void completeCallBack() {
|
需要带一个或者多个参数的回调函数:
1 |
HOTween.To(transform, 1, new TweenParms().Prop( "position" , new Vector3(10,20,30)).OnComplete(completeCallBack,350,Vector3.one));
|
3 |
private void completeCallBack(TweenEvent e) {
|
五、以speed为计量单位
一般我们使用Hotween开始一个动画,第二个参数是p_duration表示是时长,好想也没有找到如何根据速度来控制动画。 最近必须要用到speed,就找了一下,发现可以这样用:
1 |
TweenParms parms = new TweenParms();
|
2 |
parms.Prop( "position" , new Vector3(100,200,50));
|
3 |
parms.SpeedBased( true );
|
5 |
HOTween.To(FurnacePanel,5,parms); |
当在代码中设置SpeedBased为true之后,第二个参数就以速度来表示了,值越大自然运动的越快
分享到:
相关推荐
强大的Unity动画插件,个人觉得比ITween好用
DOTween(HOTween v2)是Unity引擎中的一款高性能、强大且易于使用的动画插件。该插件简化并优化了动画制作过程,为开发者提供了一种灵活、可扩展的方式来实现各种复杂的动画效果。
很节省的动画插件,笔itween节省很多,而且支持多平台,itween在wp上支持的不好。
Time Control and Pause Kit 时间控制和暂停套Unity插件unitypackage项目源码C# 支持Unity版本3.5.7或更高 时间控制和暂停套件是一个易于使用的脚本,允许您向项目添加完整的时间控制和暂停功能。 特征: - Unity ...
unity里面做插值动画的插件有许多,比较常见的有itween、hotween、dotween。根据大家的反馈和实际体验来说,dotween插件在灵活性、稳定性、易用性上都十分突出。
DOTween是一款快速,高效,安全的面向对象的动画引擎,以优化C#用户,免费和开源,让您的开发节约大量的时间,它也是以前的Unity补间引擎HOTween的演变。与之相比,DOTween的速度提高了400%以上,效率更高,更加...
DoozyUI 是一个原生 Unity 编辑器的扩展工具,可简化专业用户界面的管理和动画绘制 - 无需编程知识。DoozyUI 方便初学者并可扩展,适合从业余开发者到专业软件和游戏工作室之间所有阶段的人员使用。 UI 的管理和...
unity里面做插值动画的插件有许多,比较常见的有itween、hotween、dotween。根据大家的反馈和实际体验来说,dotween插件在灵活性、稳定性、易用性上都十分突出。能用的地方太多太多了,如果DOTween学精了的话,我...
Simple Waypoint System |Unity3d路径设计插件 Simple Waypoint System(SWS)是Unity3D的编辑器扩展,它允许你创建点 并生成路径。 AI巡逻行为 道路上运动 移动平台 相机和游戏对象动画 剪辑场景 3D GUI动画 功能...