原创文章如需转载请注明:转载自雨松MOMO程序研究院本文链接地址:NGUI研究院之Sprite精灵与精灵动画的使用(二)
首先我们在Project中创建一个Prefab对象,默认给它Transform变换属性,暂时我们给Prefab对象起名为MySprite。接着给Prefab挂上图像集合组件。在Unity导航菜单栏中选择Component->NGUI->UI->Atlas(图像集合)即可。
常用的属性介绍:
Coordinates :UI坐标单位,用默认Pixels(像素)就行。
Pixel Size:像素的长度单位1。
Add/Delete:添加与删除精灵。
first就是当前精灵的名称,如果已添加了多个精灵都会出现在Sprite下拉列表中。再往下就是设置该精灵在大图的显示区域以及坐标,下图中我们可看到已经在整个大图中框选了一个区域,就是绿色的矩形,矩形中就是当前精灵中的内容。
Test.cs
如下图所示,精灵已经在代码中动态的修改完毕,并且设置了它的深度让它靠前显示。如果想修改它的X、Y位置,直接修改Transform即可。Z轴的话修改它的深度就行,不用修改Z轴坐标。
下面我们再来学习一下精灵动画,NGUI已经帮我们封装了专门播放精灵动画的类UISpriteAnimation 专门处理精灵动画。MOMO在网上随便找了一组2D主角的行走动画,按照上面介绍的方法将整个图片导入工程中。如下图所示,这组人物的行走动画我们选区取左移动的4帧。
这里我在强调一下,需要修改修改材质的着色器,让他支持背景透明,对当前材质的着色器我们选择Unlit/TransparentColored。
Test.cs
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Test : MonoBehaviour {
//播放动画与不播放
bool isPlayAnim = false;
//得到精灵对象
GameObject animObj = null;
void Start()
{
//得到精灵对象
animObj = GameObject.Find("Sprite");
}
void OnClick ()
if(isPlayAnim)
{
//停止动画
isPlayAnim = false;
//销毁UISpriteAnimation组件
Destroy(animObj.GetComponent<UISpriteAnimation>());
//动画停止后设置精灵默认的帧
UISprite ui = animObj.GetComponent<UISprite>();
string name = ui.atlas.spriteList[0].name;
ui.spriteName = name;
}
else
{
//播放播放
isPlayAnim = true;
//加入播放动画组件
animObj.AddComponent("UISpriteAnimation");
//设置播放动画的速度
//1-60之间数值越大播放速度越快
UISpriteAnimation uiAnim = animObj.GetComponent<UISpriteAnimation>();
uiAnim.framesPerSecond = 10;
}
}
如下图所示,运行游戏点击按钮。主角开始迈着大步开始行走了,再次点击主角将停止播放行走动画。嚯嚯。最后MOMO祝大家学习愉快啦啦啦!!
把图加进prefab的步骤,选中要添加的图,再点击菜单ngui->atlas maker->Add/Update All,就可以把图build进去了