NGUI学习笔记(五):缓动
在Unity3D中可以使用自带的Animation制作任意形式的动画,不过我们这篇笔记主要是学习和使用NGUI提供的Tween动画。NGUI提供的Tween库功能较为简单,主要是用来实现NGUI自身需要的一些缓动效果,同时我们也可以使用NGUI的Tween来实现一些简单的动画效果。
Tween组件
我们选中添加到舞台的任意UI组件右键就能看到添加Tween的菜单,如图:

我们通过选择添加对应的缓动组件就可以添加对应的缓动效果了,下面先简单的看一下NGUI提供的缓动组件的功能:
- Alpha:透明度缓动动画;
- Color:颜色缓动动画;
- Width:宽度缓动动画;
- Height:高度缓动动画;
- Position:位置缓动动画;
- Rotation:角度缓动动画;
- Scale:缩放缓动动画;
- Transform:转换缓动动画;
具体使用
下面我们以Alpha组件为例来看看缓动应该如何使用:
首先我们添加一个Alpha组件到我们的UI上,这个缓动效果会直接作用到我们的UI上。
我们来看看Alpha组件提供的属性(所有的缓动组件属性都大致相同):

- From:缓动开始的值。
- To:缓动结束的值。
- Play Style:播放的风格,一个有3种风格:Once表示播放一次、Loop表示循环播放、PingPong表示循环往复播放。
- Animation Curve:Unity3D自带的动画曲线编辑器,我们可以在这里编辑缓动的曲线效果,可以实现线性动画或越来越快的动画效果等。
- Duration:播放一次动画所需的时间。
- Start Delay:开始播放动画前等待的时间。
- Tween Group:动画所属的组,下文谈到的UIPlayTween组件中使用。
- Ignore TimeScale:Unity3d的TimeScale值修改时是否会影响到该缓动动画。
- On Finished:动画播放结束时调用指定对象的指定方法,注意拖拽到该区域的GameObject必须带有脚本组件,同时Loop和PingPong永远不会执行到该方法。
动画控制
单独在组件上使用缓动动画脚本意义不大,我们还需要对缓动动画进行控制才能制作出理想的效果。
UIPlayTween
UIPlayTween是NGUI提供的一个脚本组件,其可以用来控制多个动画的播放,我们来看看其上方的参数:

- Tween Target:控制的目标对象,为空表示控制自身添加的缓动对象,或者可以指定特定的对象表示控制该对象上的缓动动画。
- Include Children:是否控制目标对象上子物体的缓动组件。
- Tween Group:具体控制的缓动组件的组号,只会控制设定组号为该数字的缓动组件。
- Trigger condition:触发机制,可以选择触发缓动动画的事件机制,比如点击当前对象或者别的事件,注意和Tween Target无关,仅针对当前对象。
- Play direction:播放方向:Forward从From到To播放、Toggle从From到To后从To到From如此反复、Reverse从To到From。
- If Target is disabled:目标物体被禁用时的处理:DoNothing不做任何处理、EnableThenPlay激活目标物体播放动画。
- If already playing:如果目标动画已经在播放时的处理:Continue继续播放、Restart重新播放、Restart If Not Playing等待播放完毕再播放一次。
- When finished:播放完毕后对目标物体的处理:Do Not Disable不做任何处理、Disable After Forward正向播放完毕后禁用物体、Disable After Reverse反向播放完毕后禁用物体。
- On Finished:所有动画播放完毕后的回调方法。
使用该组件时一般会将挂载在目标对象上的缓动脚本禁用,否则动画会一开始就播放,失去了控制的意义。
另外该组件控制的是一个物体或包括该物体子物体的缓动,如果是简单的缓动可以直接使用NGUI提供的组件,如果是较为复杂的缓动推荐使用专业的第三方缓动类库,如DOTween等。
UIPlayAnimation
我们说过Unity3D自带了Animation动画,而UIPlayAnimation就是控制Animation动画的UIPlayTween组件,具体使用类似于UIPlayTween组件,就不过多介绍了。
NGUI学习笔记(五):缓动的更多相关文章
- NGUI学习笔记汇总
NGUI学习笔记汇总,适用于NGUI2.x,NGUI3.x 一.NGUI的直接用法 1. Attach a Collider:表示为NGUI的某些物体添加碰撞器,如果界面是用NGUI做的,只能这样添加 ...
- C#可扩展编程之MEF学习笔记(五):MEF高级进阶
好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...
- NGUI 学习笔记实战之二——商城数据绑定(Ndata)
上次笔记实现了游戏商城的UI界面,没有实现动态数据绑定,所以是远远不够的.今天采用NData来做一个商城. 如果你之前没看过,可以参考上一篇博客 NGUI 学习笔记实战——制作商城UI界面 ht ...
- NGUI 学习笔记实战——制作商城UI界面
http://www.cnblogs.com/chongxin/p/3876575.html Unity3D的uGUI听说最近4.6即将推出,但是目前NGUI等UI插件大行其道并且已经非常成熟,所以我 ...
- (转)Qt Model/View 学习笔记 (五)——View 类
Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...
- java之jvm学习笔记五(实践写自己的类装载器)
java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Typescript 学习笔记五:类
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- ES6学习笔记<五> Module的操作——import、export、as
import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...
- muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor
目录 muduo网络库学习笔记(五) 链接器Connector与监听器Acceptor Connector 系统函数connect 处理非阻塞connect的步骤: Connetor时序图 Accep ...
随机推荐
- 利用序列化的方式实现C#深复制和浅复制
代码如下:具体看注释 [Serializable] public class A { public virtual string Name { get; set; } public int Age { ...
- NALU(NAL单元)
一 NALU类型 标识NAL单元中的RBSP数据类型,其中,nal_unit_type为1, 2, 3, 4, 5及12的NAL单元称为VCL的NAL单元,其他类型的NAL单元为非VCL的NAL ...
- 使用mp4v2将H264+AAC合成mp4文件
录制程序要添加新功能:录制CMMB电视节目,我们的板卡发送出来的是RTP流(H264视频和AAC音频),录制程序要做的工作是: (1)接收并解析RTP包,分离出H264和AAC数据流: (2)将H26 ...
- Squid故障
1.COSS will not function without large file support (off_t is 4 bytes long. Please reconsider recomp ...
- Android 项目利用 Android Studio 和 Gradle 打包多版本APK
在项目开发过程中,经常会有需要打包不同版本的 APK 的需求. 比如 debug版,release版,dev版等等. 有时候不同的版本中使用到的不同的服务端api域名也不相同. 比如 debug_ap ...
- 去除 waring Method 'CreateNew' hides virtual method of base type 'TCustomForm'
最近整理前人的代码,有好多的hint和waring, 其中整理到Method 'CreateNew' hides virtual method of base type 'TCustomForm', ...
- Android -- Support包特性
干货 每一个 Support 包版本后缀 vX 所代表的含义是他能够被使用的最低版本等级.之所以无法在更低版本进行使用的原因,是因为随着版本的升级,在新版本中有很多之前不支持的特性或者 API,因此如 ...
- SDUT 3571 Password 暴力搜索
这个题如果裸搜肯定超时了 但是我们可以枚举,用初始串的哪一位数字去填目标串的那一位数字 这样就是暴力6!,复杂度很低,然后需要解决过程中经过的点的问题, 因为是从左向右走,所以记录当前光标, 和当前达 ...
- AutoLayout UITableViewCell 动态高度
从这里http://www.cnblogs.com/liandwufan/p/4516956.html?utm_source=tuicool 转载过来的 -(UITableViewCell*)tabl ...
- DataSet DataTable操作
DataSet ds = new DataSet(); DataTable dt = new DataTable("OrderList"); ...