上一篇使用的是静态方式进行的加载,采用的数据结构为 数组
该篇文章则是使用动态加载的方式实现:
this.objsOfRouses = Resources.LoadAll("images",typeof(Texture));
该方法会安排图片在文件在顺序进行加载。
如图:
加载顺序如下:
using UnityEngine;
using System.Collections;
public class imageAnimation : MonoBehaviour { //private Object[] objsOfRouses;private Texture2D[] texturesLoaded;private Material materialOfPanel;private int frameCounter =0;public float delayTime =0.5f;private float currentTime=0.0f;private float endTime =0.0f;public GameObject dongWu;void Awake(){ //get the material of this panelthis.materialOfPanel = this.renderer.material;}// Use this for initializationvoid Start () { //set the starting timecurrentTime =Time.time;//0.0s//get images form the Resourse floder//the return value is objectthis.objsOfRouses = Resources.LoadAll("images",typeof(Texture));int theLength =objsOfRouses.Length;//put the images into material arrary texturesLoaded =new Texture2D[theLength];for (int i=0; i<theLength; i++){ this.texturesLoaded[i] =(Texture2D)this.objsOfRouses[i];Debug.Log("the image'name is -->"+this.texturesLoaded[i].name);}} // Update is called once per framevoid Update () { changePic(); }//void changePic(){ endTime = Time.time;float timeOffset = endTime - currentTime;if (timeOffset>0.3){ if (this.frameCounter<this.objsOfRouses.Length){ this.materialOfPanel.mainTexture = texturesLoaded[frameCounter];++frameCounter;}else{ frameCounter=0;this.materialOfPanel.mainTexture = texturesLoaded[frameCounter];}//when changge one image,get the new timecurrentTime =Time.time;} }}
最后效果如下: