Unity-基于NGUI下的序列帧动画代码实现

该方法主要是基于NGUI下利用UISprite实现序列帧动画,其原理:根据时间动态变换UISprite的图片。
1、首先,将序列帧图片导入,并全选创建一个图集,取名AnimationAtlas。
2、然后,创建一个场景,新建Panel,在其下创建一个UISprite,其Atlas选择1中创建的AnimationAtlas,Sprite选择第一帧图片。
3、利用脚本,动态改变UISprite的图片。(我的序列帧图片名为 ani_0  ani_50)

public UISprite aniSprite;
float fRate = 0.08f;
float fNextTime;
int i = 0;
int aniCount = 50;//num of frame images
bool bLoop = false; //loop or not

void Update () {
	if (bLoop) {
		if (i > aniCount) {
			i=0;        
		}       
	}
	
	if (Time.time > nextFire && i<aniCount)
	{
		nextFire = Time.time + fireRate;
		childSprite.spriteName= "ani_"+i.ToString();//change sprite name
		i++;
	}
}

若想实现前部分帧不重复,后部分帧重复播放,如,前10帧不重复,后面重复播放,则如下:

public UISprite aniSprite;
float fRate = 0.08f;
float fNextTime;
int i = 0;
int loopIndex = 11;
int aniCount = 50;//num of frame images

void Update () {
	if (i > aniCount) {
		i=loopIndex;        
	}
	
	if (Time.time > nextFire && i<aniCount)
	{
		nextFire = Time.time + fireRate;
		childSprite.spriteName= "ani_"+i.ToString();//change sprite name
		i++;
	}
}

当然,也可以直接利用NGUI提供的脚本UISpriteAnimation来完成序列帧动画的显示。但我的需求是前部分帧不重复,后部分帧重复播放,用现有的UISpriteAnimation貌似没有参数设置重复点(难道用俩?),所以我采用自己写脚本实现这个功能。

以上只是我作为初学者的学习笔记,仅供参考,有不足之处望指点一二。


你可能感兴趣的:(unity,帧序列动画)