WWW和IO方式加載圖片到UGUI的Image上顯示出來對比,后者所用時間較短芹血,速度快筏勒,代碼如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
public class wwwLoadImage : MonoBehaviour {
public Image image;
public Image image2;
// Use this for initialization
void Start () {
Debug.Log(Application.dataPath);
StartCoroutine(GetImage());
GetImageByIO();
}
// Update is called once per frame
void Update () {
}
IEnumerator GetImage() {
double startTime = (double)Time.time;
WWW www = new WWW(@"file://"+ Application.dataPath+"/logo.png");
yield return www;
if (www.error!=null)
{
yield return null;
}
Texture2D texture = www.texture;
GetImage(texture, image);
startTime = (double)Time.time - startTime;
Debug.Log("WWW加載用時:" + startTime);
}
/// <summary>
/// 以IO方式進行加載
/// </summary>
void GetImageByIO() {
double startTime=(double)Time.time;
//創(chuàng)建文件讀取流 路徑 創(chuàng)建模式 讀取權限
FileStream fileSteam = new FileStream(Application.dataPath + "/logo.png", FileMode.Open, FileAccess.Read);
fileSteam.Seek(0, SeekOrigin.Begin);
//創(chuàng)建文件長度緩沖區(qū)
byte[] bytes = new byte[fileSteam.Length];
//讀取文件
fileSteam.Read(bytes, 0, (int)fileSteam.Length);
//釋放文件讀取流
fileSteam.Close();
fileSteam.Dispose();
fileSteam = null;
Texture2D tex = new Texture2D(200, 100);
tex.LoadImage(bytes);
GetImage(tex, image2);
startTime = (double)Time.time - startTime;
Debug.Log("IO加載用時:" + startTime);
}
private void GetImage(Texture2D tex, Image image) {
//創(chuàng)建Sprite
Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
image.sprite = sprite;
image.SetNativeSize();
}
}