使用何种方式实现unity动画?
2016-10-18 14:04
1051 查看
1. 每个UI要实现动画需要建一个animation的prefab. 比较麻烦。
2. 目前只支持打开UI, 关闭UI的动画,UI打开后的动画支持比较弱。
3. Animation动画依赖各个子控件的相对位置,如果控件在UI树中的位置改了,需要调整动画。
考虑到如果让美术做UI内的动画,参考游戏中角色动画的实现,还是需要写逻辑代码, 判断当前需要播放哪一下动画,调用用应的触发函数。更好的方式是通过代码直接控制对应的UI控件的动画,理论上可以实现任何动画。 有些第三方库给已经提供了比较友好的UI界面可供美术人员控制UI控制动画效果的实现。
总结:
UI 面板打开,关闭时的动画,还按原来的方式做,UI面板内的动画,比如点击按钮,按钮缩放,列表载入的动画,可以用第三方的库来实现。可选的第三方库
目前支持UGUI的动画库有下面几个:具体可参考【1】
1、GoKitAssetStore: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 |
| 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 |
| 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. 选中要隐藏的按钮,这里是guild2. 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
相关文章推荐
- 在 unity 中使用三种简单的方式实现实时时钟动画
- iOS使用[核心动画]和[定时器]两种方式实现【呼吸灯动画】(仿蘑菇街价格标签)
- 使用Unity实现一个简单的UV动画
- 使用ActivityOptionsCompat动画共享组件的方式实现跳转Activity动画
- 使用Unity新版动画系统Animator实现三连击
- 使用一种独特的方式实现动画框架
- 使用ActivityOptions动画共享组件的方式实现跳转Activity动画
- 使用Unity新版动画系统Animator实现三连击
- 使用批处理方式实现文件与文件夹的删除
- 使用Silverlight实现 FLASH的动画效果
- 使用silverlight中的Storyboard实现动画效果
- 使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传
- 使用Unity Application block实现Ioc[原创]
- 使用Spring 2.0新特性实现前置通知--基于Schema方式
- ITCAST视频-Spring学习笔记(使用Spring的注解方式实现AOP入门)
- 使用COM方式实现不同语言之间的调用
- 使用J2ME技术实现简单的动画
- ubuntu 8.04下使用命令行方式实现无线上网
- (转自dflying chen)使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传
- 使用Anthem.NET 1.5中的FileUpload控件实现Ajax方式的文件上传