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 ...
随机推荐
- easyui-dialog中文件上传处理
function openDialog() { // $('#dlg').dialog('open'); //EasyUi的dialog中文件上传,后台获取不到文件,需要改写为下面这样 $(" ...
- Jqgrid入门-操作表格的数据(二)
上一篇中,Jqgrid已经可以从服务端获得数据,并显示在Grid表格中了.下面说一下,如何操作表格及其数据. jqGrid有很多方法函数,用来操作数据或者操作Grid表格本身.jq ...
- apache开源项目-- Velocity
Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象. 当Veloci ...
- <一>面向对象分析之面向对象和面向过程
面向对象 ---->注重的是拆分,组装. ---->封装,继承,多态,复用(只是现象) ---->面向对象变成的目标从来就不是复用.相反,对 ...
- JQuery实现——黑客帝国代码雨效果
效果如你所见就是本页面上方那样的效果 实现方法来自一个印度小伙纸,学习完我也没总结一下,今儿个补上 如何实现,大家右键查看源码复制即可,不过学习的过程还是要总结总结. 下面通过另外两个小例子,一步一步 ...
- 【转】android 自定义控件 使用declare-styleable进行配置属性(源码角度)
原文网址:http://blog.csdn.net/vipzjyno1/article/details/23696537 最近在模仿今日头条,发现它的很多属性都是通过自定义控件并设定相关的配置属性进行 ...
- js如何判断是否在iframe中及防止网页被别站用 iframe嵌套 (Load denied by X-Frame-Options)
1. js如何判断是否在iframe中 //方式一 if (self.frameElement && self.frameElement.tagName == "IFRAME ...
- 你所不知道的 URL
0.说明 第一幕 产品:大叔有用户反映账户不能绑定公众号.大叔:啊咧咧?怎么可能,我看看?大叔:恩?这也没问题啊,魏虾米.大叔:还是没问题啊,挖叉类.大叔:T T,话说产品姐姐是不是Java提供接口的 ...
- [Everyday Mathematics]20150204
设 $k_0>0$, $\phi:[k_0,\infty)\to[0,\infty)$ 是有界递减函数, 并且 $$\bex \phi(k)\leq \frac{A}{(k-h)^\al}\ph ...
- Reading or Writing to Another Processes Memory in C# z
http://www.jarloo.com/reading-and-writing-to-memory/ Declarations [Flags] public enum ProcessAccessF ...