iTween很流行,但是需要写一堆回调方法,而且参数都是string没有代码提示。写完以后会发现你的代码非常的丑,我觉得GoKit真得要比iTween更好用一些。(点击大图查看详情)
iTween“二宗罪”
- 大量使用SendMessage,先不说效率如何你需要去写对应的方法去接收它的回调。比如你要监听物体移动结束的事件,那么你就要写一个方法去接收它,这样代码会很难看。
- iTween的参数都是string,你需要自己去拼一个Hashtable,字符串谁能都记住呀?每次写都要去它的官网上去查字符串怎么拼,挺蛋疼的!
先上一段iTween的代码
1 2 3 |
iTween.MoveTo(gameObject,Vector3.zero,iTween.Hash("onComplete","onCompleteFinish")); |
这里监听了一个移动完成的事件,你就需要去拼字符串,然后在拼回调的方法。如果你监听的事件比较多,那么参数很难都记住,写起来是不是很郁闷?
1 2 3 4 5 6 |
void onCompleteFinish() { Debug.Log("DoSomeThing"); } |
在上一段GoKit的代码
1 2 3 4 5 6 7 8 9 10 |
GoTweenConfig config = new GoTweenConfig(); config.position(Vector3.zero); config.easeType = GoEaseType.Linear; config.setIterations(1); config.onComplete(delegate(AbstractGoTween obj) { Debug.Log("onComplete : "); }); Go.to(cube,4,config); |
使用config.方法名就直接可以监听某个事件,而且直接在方法体内就能接收回调事件,这样代码会很漂亮。万全不用像iTween那么样,config点一下就能出来你需要的方法,很方便。。 有时间了我在做一个详细的GoKit的案例。
iTween和GoKit都是免费的,在unity 的AssetStore上就能搜索到。
昨天看WWCD,看到3点多,现在晕乎乎的,晚安。么么
- 本文固定链接: https://www.xuanyusong.com/archives/2671
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
itween偶尔会出现很坑爹的BUG,有时候会把两个回调函数搞错,而且不是必现。大概运行10次出现1次,被这个BUG坑惨了。。结果只能换掉itween
itween moveto使用path,speed的时候,路经点距离不均匀,造成移动速度不一样。这个要怎么解决?而且不知道为什么Hotween、 LeanTween、GoKit 都不支持speed 的选项。导致不得不选择itween。
iTween在PC上面还可以玩玩,到了手机不堪负重,我只好抽取其中的方法分开使用了。HOTween还需要等等。另外第二个缺点是不存在的,因为每个函数都有详细的注释,看注释就可以了
請問”拋物線”~不知到哪一個tween可以做到呢?
跪求答案!急寻中。。。momo,你好,问你个gokit的东西。我像下面这样写为什么不能让它从0跑到100去?public int from = 0;void Start() {Go.to(this, 2, new GoTweenConfig().intProp(“from”, 100, true).setEaseType(GoEaseType.Linear).setIterations(1));}我用HoTween这样写就可以跑的。。如下://TweenParms tweenParms = new TweenParms().Prop(“from”, 100).Ease(EaseType.Linear).Loops(1, LoopType.Yoyo);//HOTween.To(this, 1, tweenParms);
在想是不是它的插件没有做这个功能。。
momo,你好,问你个gokit的东西。我像下面这样写为什么不能让它从0跑到100去?public int from = 0;void Start() {Go.to(this, 2, new GoTweenConfig().intProp(“from”, 100, true).setEaseType(GoEaseType.Linear).setIterations(1));}我用HoTween这样写就可以跑的。。如下://TweenParms tweenParms = new TweenParms().Prop(“from”, 100).Ease(EaseType.Linear).Loops(1, LoopType.Yoyo);//HOTween.To(this, 1, tweenParms);
Hello,momo,你好,问你个gokit的东西。我像下面这样写为什么不能让它从0跑到100去?int from = 0; void Start() { Go.to(this, 2, new GoTweenConfig(). intProp(“from”, 100, true). setEaseType(GoEaseType.Linear). setIterations(1)); }我用HoTween这样写就可以跑的。如下://TweenParms tweenParms = new TweenParms().Prop(“from”, 100).Ease(EaseType.Linear).Loops(1, LoopType.Yoyo); //HOTween.To(this, 1, tweenParms);
GoKit为什么没有speed啊?只能用时间吗???不想用时间想用速度的时候就不能用了吗?
修改了下gokit,使其用path(抛物线)移动的时候支持用speed移动已经合并到github上了。
Hotween出了个2.0版本叫做DOTween,效率、使用便捷性方面都做了调整,可以说直接碾压iTween,不过现在还处于Alpha阶段,等出来正式版就用它
DOTween性能和LeanTween还是差了点
momo我想实现一个摄像机路径动画,在一个路径上不同路段的速度可以控制,这要用哪个插件可以实现呢?iTween 、Gokit、Hotween、LeanTween 这几个哪个可以实现哦~
群里朋友分享个 camera path animator,灰常的强大啊,比iTween的路径编辑器强大多了,就是不知道性能如何,hotween和leantween还没整明白。。。
GoKit貌似功能有点简单哦,貌似没把iTween的功能支持全。
用过 Itween,Hotween和 LeanTween,最喜欢的还是 LeanTween。LeanTween代码写起来方便,性能也好,支持的缓动也很全。Hotween 查找它的调用方法不好找,不容易上手。Itween 就不说了,完全同意松哥的说法,也深有体会啊。GoKit 没用过。
GoKit是不是不支持NGUI啊?
个人觉得HoTween很好用。
我倒是一直用HOTween
momo , HOTween和GoKit 哪个更好用呢?
Momo 有没有用过LeanTween? 实测感觉比Gokit 和 iTween 快很多很多
没用过还, 你确定更快么? 我也可以研究研究。。。
主要是好用不好用。。代码写起来方便不方便,综合因素考量。。
确定更快哦,而且代码写起来也挺方便,感觉封装的比iTween还可视化许多,我比较常用也就HoTween和LeanTween,想顺便请教一下关于Android同时使用多个jar的解决方式!