我们先来看下帧动画,顾名思义,就是一帧帧的图片组成的动画,我们须要用到UISprite Animation组件,它的属性例如以下:

Framerate:播放速率,也就是每秒钟播放的帧数

Name Prefix:图片名字的前缀,能够用来过滤图片集中的图片,从而指定你须要的图片

Loop:循环

依照前面文章创建UI的步骤,我们创建一个sprite,一个button,通过点击button来控制动画的播放和暂停。OK,首先我们创建一个Atlas,把我们的须要的素材放进去,例如以下图:

点击Create创建Atlas,然后设置sprite的sprite图片为第一帧图片,再新建一个button,project结构例如以下:

然后我们新建一个c#脚本,用来控制动画,代码例如以下:

using UnityEngine;
using System.Collections; public class TestRun : MonoBehaviour { private bool isAnimation=false; GameObject sprite=null; // Use this for initialization
void Start ()
{ GameObject play=GameObject.FindGameObjectWithTag("Player"); UIEventListener.Get(play).onClick=playClick; sprite=GameObject.Find("RunnerSprite"); } // Update is called once per frame
void Update ()
{ } void playClick(GameObject button)
{ if(isAnimation)
{ isAnimation=false;
//xiaohui
Destroy(sprite.GetComponent<UISpriteAnimation>()); UISprite us=sprite.GetComponent<UISprite>();
//停止播放以后把精灵图片置为第一张
us.spriteName=us.atlas.spriteList[0].name; }
else
{ Debug.Log("----11111");
isAnimation=true; UISpriteAnimation an=sprite.AddComponent<UISpriteAnimation>();
//设置播放的速度
an.framesPerSecond=20; } } }

然后把脚本绑定到button上,执行,例如以下图:

以下我们来看下Tween库,顾名思义,事实上就是一些平移、旋转、缩放等得动画,我们来看下Tween有哪些动画,例如以下图:

我们给button加入�一个tween组件,属性例如以下图:

能够右键widget之后在Tween菜单选择合适的选项来给它添加�tween功能。或者通过NGUI菜单添加�。或者直接通过名字来挂tween脚本。

新增的tween默认是active的,所以你点击Play后tween会执行。假设不想执行,勾选掉脚本名字那里的复选框。

全部的tween都继承自相同的基类(UITweener)而且有相同的基本功能。From和To来表示開始和结束的值。Animation
Curve用来与微调这两个值的变化过程。

Duration指定一次动画的时长。Start
Delay进行延迟play。秒为单位。

Tween Group能够控制在同一个object上的多个tween触发哪个。播放时指定group ID。

你能够通过指定button上的OnClick部分调用tween的Play()函数。

挂一个UIPlayTween脚本(Attach
-> Play Tween Script)实现高级的功能。提供很多其它的play时选项,属性例如以下:



首先指定Tween Target。这个game object须要至少一个tween,这样才干够触发。Include
Child来激活这个object的全部子节点tween。



与上面的tween类似,Tween Group让你选择性的激活tween。



Trigger condition指定什么行为触发tween。Play direction决定play方式。假设target时disabled,你能够选择激活它或者保持原状(这样你有益设置为disabled的object所包括的tween就不会马上播放)。



假设tween正在play,能够选择restart让它马上从头play、继续播放,或者之后之前的play结束的话才play。能够设置tween后disable掉target——用来切换菜单的时候非常管用。

最后,假设想在tween结束的时候调用其它功能函数,拖拽一个game object到Notify属性里面,选择想要的函数。和全部的NGUI通知一样,函数须要声明为“public void FuncName (void)”类型。



unity3D游戏开发十八之NGUI动画的更多相关文章

  1. 【Unity3D游戏开发】NGUI之多分辨率下完美分布式协同开发 (五)

    NGUI多分辨率下完美分布式协同开发:不同分辨率下相对于屏幕坐标的Perfab数据不再丢失 NGUI多分辨率下完美分布式协同开发不同分辨率下相对于屏幕坐标的Perfab数据不再丢失 开发问题 原因分析 ...

  2. [Unity3D]Unity3D游戏开发之跑酷游戏项目解说

    大家好,我是秦元培.我參加了CSDN2014博客之星的评选,欢迎大家为我投票,同一时候希望在新的一年里大家能继续支持我的博客. 大家晚上好.我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.c ...

  3. Unity3D游戏开发初探—2.初步了解3D模型基础

    一.什么是3D模型? 1.1 3D模型概述 简而言之,3D模型就是三维的.立体的模型,D是英文Dimensions的缩写. 3D模型也可以说是用3Ds MAX建造的立体模型,包括各种建筑.人物.植被. ...

  4. Unity3D游戏开发之连续滚动背景

    Unity3D游戏开发之连续滚动背景 原文  http://blog.csdn.net/qinyuanpei/article/details/22983421 在诸如天天跑酷等2D游戏中,因为游戏须要 ...

  5. [Unity3D]Unity3D游戏开发之飞机大战项目解说

    大家好,我是秦元培,欢迎大家继续关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 首先感谢大家对我博客的关注,今天我想和大家分享的是一个飞机大战的项目.这是一个比較综合的 ...

  6. [Unity3D]Unity3D游戏开发《反对》说到游戏(上)——目标跟踪

    朋友,大家好.我是秦培,欢迎关注我的博客.我的博客地址blog.csdn.net/qinyuanpei. 首先博主要自我反省,过了这么久才来更新博客,这段时间主要是在忙着写期末的作业,所以博主基本上没 ...

  7. [Unity3D]Unity3D游戏开发之怪物AI

    大家好.欢迎大家关注由我为大家带来的Unity3D游戏开发系列文章,我的博客地址为:http://blog.csdn.net/qinyuanpei.        在上一篇文章中,我们基本上实现了一个 ...

  8. 2019年Unity3D游戏开发前景预测及总结

    由于现在随着互联网时代的到来,人们上网玩游戏的越来越多,导致游戏开发人才供不应求,如果你想成为一名优秀的开发者,那么掌握Unity3D开发技术是不可跳过的一环.随着移动互联网的发展,移动端游戏日益盛行 ...

  9. 从一点儿不会开始——Unity3D游戏开发学习(一)

    一些废话 我是一个windows phone.windows 8的忠实粉丝,也是一个开发者,开发数个windows phone应用和两个windows 8应用.对开发游戏一直抱有强烈兴趣和愿望,但奈何 ...

随机推荐

  1. mac下进行配置android真机调试环境

    学习android开发几天了,今天好不容易找了个android手机,直接连接mac电脑,结果eclipse-DDMS里面没有显示任何设备. 使用命令行adb devices 试了下,没设备列表. 郁闷 ...

  2. 《火球——UML大战需求分析》(第2章 耗尽脑汁的需求分析工作)——2.1 需求分析面面观

    说明: <火球——UML大战需求分析>是我撰写的一本关于需求分析及UML方面的书,我将会在CSDN上为大家分享前面几章的内容,总字数在几万以上,图片有数十张.欢迎你按文章的序号顺序阅读,谢 ...

  3. 解决VTune错误.../lib64/libstdc++.so.6: version `GLIBCXX_3.4.14&#39; not found (required by ...)

    错误信息及出现情景: 在export环境变量LD_PRELOAD=$XTERN_ROOT/dync_hook/interpose.so后,再执行amplxe-gui,出现上述错误.新增的动态链接库对V ...

  4. 查看 ios 真机调试log,导出log

    使用Xcode 在模拟器李敏运行的时候,可以直接通过xcode 查看log,但是真机测试的时候,xcode 却无法获取到,对于日志输出,可以先保存到真机上,之后通过iTunes 导出即可 修改源码 此 ...

  5. Uva - 11383 - Golden Tiger Claw

    题意:一个N*N的矩阵,第i行第j列的元素大小为w[i][j],每行求一个数row[i],每列求一个数col[j],使得row[i] + col[j] >= w[i][j],且所有的row[]与 ...

  6. hdu 4687 带花树匹配

    其实吧,思路挺简单的,只不过昨天刚学,还有一些东西不太了解,然后就23333333... 吃晚饭回来就A了,我是有多傻啊,这么题都A不掉,不能忍啊... 我们可以先求出哪些边是可能存在于最大匹配中的, ...

  7. 【Unity3D自学记录】Unity3D网络之Socket聊天室初探

    首先创建一个服务端程序,这个程序就用VS的控制台程序做即可了. 代码例如以下: using System; using System.Collections.Generic; using System ...

  8. tomcat path设置

    zjtest7-app:/usr/local/apache-tomcat-7.0.55_8082/logs# netstat -nap | grep 8082 tcp 0 0 :::8082 :::* ...

  9. ntohs, ntohl, htons,htonl的比较和详解

    在C/C++写网络程序的时候,往往会遇到字节的网络顺序和主机顺序的问题. 这时就可能用到htons(), ntohl(), ntohs(),htons()这4个网络字节顺序与本地字节顺序之间的转换函数 ...

  10. typedef和define具体的具体差别

      1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,仅仅有在编译已被展开的源程序时才会发现可能的错误并报错.比如: #define PI 3. ...