unity3D游戏开发十八之NGUI动画

来源:互联网 发布:youtube软件google服务 编辑:程序博客网 时间:2024/05/22 15:04

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


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

Name Prefix:图片名字的前缀,可以用来过滤图片集中的图片,从而指定你需要的图片

Loop:循环

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


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



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

[csharp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class TestRun : MonoBehaviour {  
  5.   
  6.   
  7.     private bool isAnimation=false;  
  8.       
  9.     GameObject sprite=null;  
  10.   
  11.     // Use this for initialization  
  12.     void Start ()   
  13.     {  
  14.       
  15.   
  16.         GameObject play=GameObject.FindGameObjectWithTag("Player");  
  17.   
  18.   
  19.         UIEventListener.Get(play).onClick=playClick;  
  20.   
  21.   
  22.         sprite=GameObject.Find("RunnerSprite");  
  23.   
  24.   
  25.     }  
  26.       
  27.     // Update is called once per frame  
  28.     void Update ()   
  29.     {  
  30.       
  31.     }  
  32.   
  33.   
  34.   
  35.   
  36.     void playClick(GameObject button)  
  37.     {  
  38.   
  39.         if(isAnimation)  
  40.         {  
  41.   
  42.             isAnimation=false;  
  43.             //xiaohui  
  44.             Destroy(sprite.GetComponent<UISpriteAnimation>());  
  45.   
  46.             UISprite us=sprite.GetComponent<UISprite>();  
  47.             //停止播放以后把精灵图片置为第一张  
  48.             us.spriteName=us.atlas.spriteList[0].name;  
  49.   
  50.   
  51.         }  
  52.         else  
  53.         {  
  54.       
  55.             Debug.Log("----11111");  
  56.             isAnimation=true;  
  57.   
  58.             UISpriteAnimation an=sprite.AddComponent<UISpriteAnimation>();  
  59.             //设置播放的速度  
  60.             an.framesPerSecond=20;  
  61.   
  62.   
  63.   
  64.         }  
  65.   
  66.   
  67.   
  68.   
  69.     }  
  70.   
  71.   
  72.   
  73.   
  74. }  
然后把脚本绑定到button上,运行,如下图:


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


我们给button添加一个tween组件,属性如下图:


可以右键widget之后在Tween菜单选择合适的选项来给它增加tween功能。或者通过NGUI菜单增加。或者直接通过名字来挂tween脚本。
新增的tween默认是active的,所以你点击Play后tween会运行。如果不想运行,勾选掉脚本名字那里的复选框。
所有的tween都继承自同样的基类(UITweener)并且有同样的基本功能。FromTo来表示开始和结束的值。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)”类型。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 汽车罚款单丢了怎么办 处理违章分不够怎么办 收入证明不够两倍怎么办 驾驶证被扣留了怎么办 驾照没考过怎么办 驾驶证超过60天怎么办 扣分超过36分怎么办 护士资格证过期了怎么办 辞职护士执业证怎么办 网约护士怎么办手续 动车票待核验怎么办 店员不维护老板怎么办 准考证号会过期怎么办 驾校准考证丢了怎么办 科目二下大雨怎么办 考科目二下雨天怎么办 普通话总是二乙怎么办 科目二很紧张怎么办 18年科目四缺考怎么办 个人医保卡欠费怎么办 医保欠费不想交怎么办 怀化市驾考绿色通道怎么办? 签注易不能办理怎么办 网上怎么办护照和签证 意大利被偷护照怎么办 户口在学校 怎么办签证 户口换了身份证怎么办 广州在校大学生怎么办护照 民间借贷无法还怎么办 退伍档案没接收怎么办 档案被单位扣住怎么办 公积金提不出来怎么办 公积金还贷款怎么办手续 科一预约失败怎么办 科四忘记预约怎么办 我科目一缺考了怎么办? 无可选考试场地怎么办 早产儿脑部发育不好怎么办 宝宝脑部发育不好怎么办 小孩脑部发育不好怎么办 8岁儿童智力低下怎么办