您的位置:首页 > 移动开发 > Unity3D

使用何种方式实现unity动画?

2016-10-18 14:04 1051 查看


目前游戏中UI动画是通过unity自带的animation动画实现的, 有以下一些缺点:

1.             每个UI要实现动画需要建一个animation的prefab. 比较麻烦。

2.             目前只支持打开UI, 关闭UI的动画,UI打开后的动画支持比较弱。

3.             Animation动画依赖各个子控件的相对位置,如果控件在UI树中的位置改了,需要调整动画。

考虑到如果让美术做UI内的动画,参考游戏中角色动画的实现,还是需要写逻辑代码, 判断当前需要播放哪一下动画,调用用应的触发函数。更好的方式是通过代码直接控制对应的UI控件的动画,理论上可以实现任何动画。 有些第三方库给已经提供了比较友好的UI界面可供美术人员控制UI控制动画效果的实现。

总结:

       UI 面板打开,关闭时的动画,还按原来的方式做,UI面板内的动画,比如点击按钮,按钮缩放,列表载入的动画,可以用第三方的库来实现。

可选的第三方库

目前支持UGUI的动画库有下面几个:具体可参考【1】

1、GoKit

AssetStore:https://www.assetstore.Unity3D.com/en/#!/content/3663

下载地址:https://github.com/prime31/GoKit

 

2、ITween

官网:http://itween.pixelplacement.com/index.PHP

AssetStore:https://www.assetstore.unity3d.com/en/#!/content/84

下载地址:https://github.com/jtothebell/iTween

缺点:

大量使用SendMessage,而SendMessage使用反射,效率不高

iTween的参数都是string,你需要自己去拼一个Hashtable,去记字符串,不人性化!每次写都要去它的官网上去查字符串怎么拼,挺蛋疼的!

 

3、LeanTween

AssetStore:https://www.assetstore.unity3d.com/en/#!/content/3595

下载地址:https://github.com/dentedpixel/LeanTween

优点:貌似比Hotween和Itween性能好,快!参考:http://dentedpixel.com/developer-diary/leantween-speed-comparison-to-itween/

 

4、Hotween

官网:http://hotween.demigiant.com/

AssetStore:https://www.assetstore.unity3d.com/en/#!/content/3311

下载地址:http://hotween.demigiant.com/

 

5、DOTween

 这是Hotween官网出的,速度超过4倍更快,更高效,大量的新功能

下载地址:http://dotween.demigiant.com/download.php#download

总结:

网上有很多各个库的性能比较,下面是其中一些,我没有实际测试,

64,000 generic floats in a loop

 
DOTween
HOTween
LeanTween
GoKit
iTween
Average FPS
124 FPS

25 FPS

102 FPS

freezes

freezes

Startup time

76 MS

332 MS

34 MS

freezes

freezes

16,000 generic floats in aloop

 
DOTween
HOTween
LeanTween
GoKit
iTween
Average FPS
412 FPS

115 FPS

389 FPS

387 FPS

freezes

Startup time

14 MS

74 MS

7 MS

47,432 MS

freezes

2,000 generic floats in aloop

 
DOTween
HOTween
LeanTween
GoKit
iTween
Average FPS
1091 FPS

888 FPS

1050 FPS

998 FPS

3 FPS

Startup time

2 MS

11 MS

1 MS

6,258 MS

240 MS

 

基本上倾向于用Dotween和Leantween。Dotween代码可读性强,体现了面向对象的思想。下面重点研究Dotween.

Dotween.简介

Dotween的一个好处是不需要程序介入,美术也可以直接拿来用。

Dotween支持的动画很多,如下图所示,具体文档可以参考链接2的官方文档。像游戏中灯光的颜色,材质的颜色,纹理坐标,纹理缩放,Rigidbody的坐标,Camera的背景颜色,景深等都可以做动画。比较常用的就是对Transform或者rect transform的动画。

 

 

有两种方式可以实现动画,一种是在unity编辑器里实现,游戏中用到的动画基本都可以覆盖到。 另外一种是通过代码实现UI控制的动画。下面通过这2种方式实现游戏中下面一排按钮的显示和隐藏动画。

 

 

点击一个隐藏按钮后,所有按钮向右移动到屏幕外面,如下图所示。

 

 

通过编辑器实现按钮隐藏功能:

1.    选中要隐藏的按钮,这里是guild

2.    Inspector面板点击add component. 选择Dotween->Dotween animation. 出现如下面板, 这个面板可以配置动画参数。配置如下所示。

3.    这几个按钮有相同的配置,所以Copy这个component, 粘贴到另外几个按钮下面。

4.    Dotween支持正向播和反向播动画,正向播动画隐藏按钮,反向播显示按钮,代码如下所示。目前unIty editor里面没有发现这种支持event trigger toggle的实现,我先写在代码里面了。后面可以做一个这种工具供美术使用。

通过代码实现按钮隐藏功能

只需要实现下面的代码就行

 

参考:

【1】http://blog.csdn.net/kaitiren/article/details/46789367

【2】http://dotween.demigiant.com/documentation.php
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: