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;
}
}
文章標籤
全站熱搜

版主你好,請問 “他是 System.Drawing 套件(記得 using 匯入 && 專案中加入System.Drawing.dll 檔,DLL 在 Unity安裝路徑可找到)“ 這段是要如何處理呢??我將下載的System.Drawing.dll 檔匯入了 Unity Folder%\Editor\Data\Mono\lib\mono\2.0 也在unity assets檔案的地方放進去了 請問這樣做對嗎?? 而程式的部分我是建立了csharp貼上code後將程式檔案綁在cube 請問我有哪些出錯了嗎@@?我一直失敗很苦惱,謝謝您~~
搜尋 Unity 安裝路徑 System.Drawing.dll 檔,不需要從網路下載 對,放到 Assets 資料夾中 類別名稱要跟檔案名稱相同喔,像我的類別名稱是 ReadImage,那檔案名稱一定是 ReadImage.cs
版主您好,想請問 在使用此方法在unity裡面play是正常的可以顯示, 但是輸出之後,就會感覺像是讀不到圖片,變成一個白色的框框, 不曉得做錯了哪一部,謝謝!!
檢查一下輸出資料夾內,有沒有包含 System.Drawing.dll 如果沒有請複製一份過去
確認有複製過去,一開始沒有複製過去是沒辦法執行的,所以覺得很奇怪,想請教大大
他有說發生甚麼錯誤嗎? 用 try-catch 接看看
不好意思,請問您一個問題 我的顯示都是可以正常的,但是他到Texture之後上下左右都會完全顛倒 這個是正確的嗎?還是說我還需要再做其他的調整。 謝謝您
如果是這樣的話可以改成 x-- ( 原本是 x++
*****
*****
版主您好,想要請問您 我照您的方法在Unity內可以正確的顯示出圖案,但是我輸出成遊戲之後會無法顯示出Texture,不知道是不是因為無法正確讀取到圖片。 謝謝您~
DLL 檔 也要放到遊戲目錄中才可以 讀不到圖片也是個問題,可以往這兩方向去找 目前我只有測試 Windows & Android 是 ok 的 像 iOS 就鐵定不行...
不好意思,又要請教您了 因為我確定在我的Data資料夾中有DLL檔,我也嘗試換過圖片的路徑了,但是還是沒辦法準確的將圖片加入到物件的Texture 想要請問您,是否有方法能將本地圖片加入到Image或是Raw Image,如果有方法的話想要利用此方法來達到我的目的。 謝謝您了
*****
*****
老師剛剛我嘗試用 using System.IO; 來調查資料夾, 但我發現 System.IO.File.Exists ( @"path" ) 這樣的寫法只能用在收尋檔案, 也就是說得 "這樣打" --> System.IO.File.Exists ( @"D:\picture\desk.png" ) , 而 "不能這樣打" --> System.IO.File.Exists ( @"D:\picture" ) ,否則會說找不到資料夾。 我想要收尋是否有 "資料夾" 的話該怎麼做呢? 以上,感謝老師!
老師我已經解決了,我改成Directory.Exists(@path) ,這樣就可以了。
不錯 !
這個方法讀取有點久。。。