Unity 图片序列帧动画的三种方法(个人总结,若有其它方法欢迎交流)

using UnityEngine;
using System.Collections;

/// 
/// 图片序列帧播放三种方法 
/// GUI.DrawTexture (new Rect (10, 10, 100, 100), TexArray [currentIndex]);每一帧都执行
///  currentIndex是控制一定时间后换一下
/// 
public class TexAnimation : MonoBehaviour 
{

//
	 //方法一  序列帧
//	public Texture2D[] TexArray;
//
//	private int currentIndex;
//
//	private float countTime;
//
//	void Start () 
//	{
//		currentIndex = 0;
//		countTime = 0.0f;
//	}
//	
//	
//	void OnGUI()
//	{
//		GUI.DrawTexture (new Rect (10, 10, 100, 100), TexArray [currentIndex]);
//
//		countTime++;
//
//		if (countTime%50 ==0)       //  %取余数   当countTime整除50时执行  相当于50帧后换图片   50改成越大间隔越长 
//		{
//			currentIndex++;
//			if (currentIndex == TexArray.Length) 
//			{
//				currentIndex = 0;
//				countTime = 0;
//			}
//		}
//	}

	
	// 方法二  协同
//	public Texture2D[] TexArray;
//
//	private int currentIndex;
//
//	void Start ()
//	{
//		StartCoroutine ("WaitForNext");
//	
//	}
//
//	void OnGUI()
//	{
//		GUI.DrawTexture (new Rect (10, 10, 100, 100), TexArray [currentIndex]);
//	}
//
//	IEnumerator WaitForNext()
//	{
//		while (true)         //死循环 用于一直执行下去
//		{
//			yield return new WaitForSeconds(1.0f);
//			currentIndex++;
//
//
//			if (currentIndex == TexArray.Length) 
//			{
//				currentIndex = 0;    
//			}
//		}
//
//
//	}


	
	//方法三   Invoke

	public Texture2D[] TexArray;
	private int currentIndex;

	void Start ()
	{
		Invoke ("ChangeIndex", 1.0f);  //1秒之后执行ChangeIndex()函数
	}

	void OnGUI()
	{
		GUI.DrawTexture (new Rect (10, 10, 100, 100), TexArray [currentIndex]);

	}

	void ChangeIndex()
	{
		currentIndex++;
		if (currentIndex == TexArray.Length) 
		{
			currentIndex = 0;    
		}

		Invoke ("ChangeIndex", 1.0f);   //隐约有点递归的味道  执行完后再执行
	}
		
}

你可能感兴趣的:(Unity)