NGUI研究院之Sprite精灵与精灵动画的使用(二)
2012-11-14 10:11
411 查看
原创文章如需转载请注明:转载自雨松MOMO程序研究院本文链接地址:NGUI研究院之Sprite精灵与精灵动画的使用(二)
学习了几天Unity3D强大的NGUI插件,MOMO觉得NGUI中最大的亮点之一就是Sprite精灵。我们先说说精灵是什么东西?它可以在一张大图中去截取一部分(大图就是整体图像集合,而截取的小图就是一个精灵),然后起一个精灵的名称,使用时通过精灵的名称就能直接绘制,并且精灵还可以播放动画。总之真的非常强大。本节我们学习如何创建自己的精灵文件。首先我们在Project中创建一个Prefab对象,默认给它Transform变换属性,暂时我们给Prefab对象起名为MySprite。接着给Prefab挂上图像集合组件。在Unity导航菜单栏中选择Component->NGUI->UI->Atlas(图像集合)即可。
常用的属性介绍:
Coordinates :UI坐标单位,用默认Pixels(像素)就行。
Pixel Size:像素的长度单位1。
Add/Delete:添加与删除精灵。
first就是当前精灵的名称,如果已添加了多个精灵都会出现在Sprite下拉列表中。再往下就是设置该精灵在大图的显示区域以及坐标,下图中我们可看到已经在整个大图中框选了一个区域,就是绿色的矩形,矩形中就是当前精灵中的内容。
![](http://www.xuanyusong.com/wp-content/uploads/2012/05/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7-2012-05-21-%E4%B8%8A%E5%8D%8810.59.07.png)
下面我们将这张图片分为4块完全相等的精灵,接着我们学习在代码中如何控制这些精灵的绘制以及排序。创建脚本Test.cs并且将它挂在刚刚创建的精灵对象身上。
Test.cs
01 | using UnityEngine; |
02 | using System.Collections; |
03 | using System.Collections.Generic; |
04 |
05 | public class Test : MonoBehaviour { |
06 |
07 | void Start() |
08 | { |
09 |
10 | //得到精灵组件脚本 |
11 | UISprite ui = gameObject.GetComponent<UISprite>(); |
12 |
13 | //得到图像集合中精灵的数量 |
14 | Debug.Log( "精灵的数量" + ui.atlas.spriteList.Count); |
15 |
16 | //得到图像集合数组中对应角标精灵对象的名称 |
17 | string name = ui.atlas.spriteList[2].name; |
18 |
19 | //设置显示精灵的名称 |
20 | ui.spriteName = name; |
21 |
22 | //设置精灵的深度,数值越大绘制的越靠前 |
23 | ui.depth = 2; |
24 | } |
25 | } |
![](http://www.xuanyusong.com/wp-content/uploads/2012/05/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7-2012-05-21-%E4%B8%8B%E5%8D%881.02.18.png)
下面我们再来学习一下精灵动画,NGUI已经帮我们封装了专门播放精灵动画的类UISpriteAnimation 专门处理精灵动画。MOMO在网上随便找了一组2D主角的行走动画,按照上面介绍的方法将整个图片导入工程中。如下图所示,这组人物的行走动画我们选区取左移动的4帧。
这里我在强调一下,需要修改修改材质的着色器,让他支持背景透明,对当前材质的着色器我们选择Unlit/TransparentColored。
![](http://www.xuanyusong.com/wp-content/uploads/2012/05/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7-2012-05-21-%E4%B8%8B%E5%8D%883.47.33.png)
接着在Hierarchy视图中选择Sprite(NGUI)(刚刚创建的精灵对象),然后在Unity导航菜单栏中选择Component->NGUI->UI->Sprite Animation(帧动画)组件即可。此时直接运行游戏我们就会发现主角已经按照刚刚裁剪的精灵顺序动了起来,这还没有完,我们下面学习在代码中如何动态的控制精灵。
本例我们的目的是使用NGUI在屏幕中创建一个按钮,第一次点击按钮主角播放行走动画,再次点击按钮主角动画将停止。上篇文章中我们已经学习了NGUI中按钮的相应事件,如果想在别的对象或者脚本中监听某个按钮的点击事件那么就可以使用传递消息的方式。NGUI帮我们封装了一次传递消息的类,Unity导航菜单栏中选择NGUI-》Interaction->ButtonMessage。它的原理也是使用Unity的sendMessage,有兴趣的朋友可以去看看。接着说正题,创建脚本Test.cs挂在刚刚创建的按钮上。
Test.cs
01 | using UnityEngine; |
02 | using System.Collections; |
03 | using System.Collections.Generic; |
04 |
05 | public class Test : MonoBehaviour { |
06 |
07 | //播放动画与不播放 |
08 | bool isPlayAnim = false ; |
09 | //得到精灵对象 |
10 | GameObject animObj = null ; |
11 |
12 | void Start() |
13 | { |
14 | //得到精灵对象 |
15 | animObj = GameObject.Find( "Sprite" ); |
16 |
17 | } |
18 |
19 | void OnClick () |
20 | { |
21 | if (isPlayAnim) |
22 | { |
23 | //停止动画 |
24 | isPlayAnim = false ; |
25 | //销毁UISpriteAnimation组件 |
26 | Destroy(animObj.GetComponent<UISpriteAnimation>()); |
27 |
28 | //动画停止后设置精灵默认的帧 |
29 | UISprite ui = animObj.GetComponent<UISprite>(); |
30 | string name = ui.atlas.spriteList[0].name; |
31 | ui.spriteName = name; |
32 |
33 | } |
34 | else |
35 | { |
36 | //播放播放 |
37 | isPlayAnim = true ; |
38 | //加入播放动画组件 |
39 | animObj.AddComponent( "UISpriteAnimation" ); |
40 | //设置播放动画的速度 |
41 | //1-60之间数值越大播放速度越快 |
42 | UISpriteAnimation uiAnim = animObj.GetComponent<UISpriteAnimation>(); |
43 | uiAnim.framesPerSecond = 10; |
44 | } |
45 |
46 | } |
47 |
48 | } |
![](http://www.xuanyusong.com/wp-content/uploads/2012/05/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7-2012-05-21-%E4%B8%8B%E5%8D%884.57.34.png)
相关文章推荐
- NGUI研究院之Sprite精灵与精灵动画的使用(二)
- NGUI研究院之Sprite精灵与精灵动画的使用(二)
- NGUI研究院之Sprite精灵与精灵动画的使用(二)
- NGUI研究院之Sprite精灵与精灵动画的使用(二)
- NGUI Sprite精灵与精灵动画的使用
- 一起学习NGUI之Sprite精灵与精灵动画的使用(2)
- NGUI研究之Sprite精灵与精灵动画的使用
- NGUI研究院之Sprite精灵与精灵动画的使用(二)
- unity3d中使用精灵sprite创建并控制2d动画
- 【python游戏编程之旅】第六篇---pygame中的Sprite(精灵)模块和加载动画
- SpriteBuilder中使用GUI界面快速搭建RPG游戏中的地图名显示动画
- Cocos2d学习之路三(使用Zwoptex创建精灵表单和CCAnimate动画)
- SpriteBuilder中使用GUI界面快速搭建RPG游戏中的地图名显示动画
- Cocos2d学习之路三(使用Zwoptex创建精灵表单和CCAnimate动画)
- Sprite Kit编程指南(2)-使用精灵
- 使用DirectX让子图形移动(精灵动画)
- SpriteBuilder中如何给精灵添加帧动画
- Sprite动画播放和Slider使用
- cocos2d-x 基本概念 骨骼动画 vs. 精灵表(sprite sheets)
- 使用 2DToolkit 插件 制作2D精灵动画