Unity 載入本地電腦檔案可以使用內建的 UnityEngine.WWW 的方式來載入,雖然比較方便使用,但是有很多副作用...,例如不能外加執行緒來增加效能,而且本身讀取超慢...,而且在Android中容易當機(讀太慢了 Android就會判斷成是沒有回應,故"強制"結束應用程式)。

    所以今天介紹 Bitmap 類別,他是 System.Drawing 套件(記得 using 匯入 && 專案中加入System.Drawing.dll 檔,DLL 在 Unity安裝路徑可找到)。

    廢話不多說,直接看結果吧!! 事先我先在 C:/C.jpg 路徑裡放了張圖片, 在執行前沒有載入任何貼圖,執行後他會抓 C:/C.jpg 影像來當作 Unity 的 Texture2D 。


執行前:

A  

執行後:

B

程式碼:

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;
    }
}







arrow
arrow
    全站熱搜

    黃彥霖 發表在 痞客邦 留言(11) 人氣()