Unity 載入本地電腦檔案可以使用內建的 UnityEngine.WWW 的方式來載入,雖然比較方便使用,但是有很多副作用...,例如不能外加執行緒來增加效能,而且本身讀取超慢...,而且在Android中容易當機(讀太慢了 Android就會判斷成是沒有回應,故"強制"結束應用程式)。
所以今天介紹 Bitmap 類別,他是 System.Drawing 套件(記得 using 匯入 && 專案中加入System.Drawing.dll 檔,DLL 在 Unity安裝路徑可找到)。
廢話不多說,直接看結果吧!! 事先我先在 C:/C.jpg 路徑裡放了張圖片, 在執行前沒有載入任何貼圖,執行後他會抓 C:/C.jpg 影像來當作 Unity 的 Texture2D 。
執行前:
執行後:
程式碼:
using UnityEngine;
using UnityEngine;
using System.Collections;
using System.Drawing;
public class ReadImage : MonoBehaviour {
void Start () {
Bitmap image = new Bitmap("C:/C.jpg");
Texture2D t = new Texture2D(image.Width, image.Height);
for(int x=0; x<image.Width; x++){
for(int y=0; y<image.Height; y++){
t.SetPixel(x,y,
new Color32(
image.GetPixel(x,y).R,
image.GetPixel(x,y).G,
image.GetPixel(x,y).B,
image.GetPixel(x,y).A
)
);
}
}
t.Apply();
renderer.material.mainTexture = t;
}
}
全站熱搜