可以顯示網路上的圖片、電腦上的圖片、手機上的圖片,不過在此我只示範讀取網路和電腦上的圖片。
一樣先引入NGUI,這次示範的NGUI版本為3.5.8 (NGUI真的是太好用了!輕鬆解決各種不同螢幕大小的問題)
再來選擇NGUI → Create → Texture
新增Texture後,將其設定為貼齊螢幕範圍(貼齊螢幕範圍的方法請參考我的這篇文章),再來建立一個C# Scrpit,命名為test
由於用不到Main Camera所以刪掉,最後會呈現下面這張圖的樣子
先準備好兩張圖片,一張為電腦上的圖片(放在桌面上),一張為網路上的圖片,就可以開始撰寫程式碼了。
P.S.這篇文章會使用到StartCoroutine和yield return這兩個方法和關鍵字,這兩個的意思可以看這篇文章
using UnityEngine;
using System.Collections;
public class test : MonoBehaviour
{
private string file_on_PC;//電腦上的圖片完整路徑
private string file_on_web;//網路上的圖片完整網址
private UITexture show;//將圖片顯示在Texture上,詳情請看(註1)
private Texture2D picture;
void Start()
{
//使用電腦上的圖片的格式為 "file://" + filePath + "\完整檔名(限英+數)"
//這邊使用小老鼠'@'的用意為取消反斜線'\'本身的作用,也可以將每個反斜線前面在多個反斜線,也就是'\\'
file_on_PC = "file://" + @"C:\Users\Lin\Desktop\MyPicture.png";
//網路圖片,直接給予完整的網址即可
file_on_web = "http://images5.fanpop.com/image/photos/25500000/Saber-Lily-fate-stay-night-25551575-985-738.jpg";
//指定show這個元件所在的位置
show = GameObject.Find("UI Root/Texture").GetComponent<UITexture>();
}
private IEnumerator show_on_PC_picture()
{
//引入檔案必須使用WWW類別,此類別放在UnityEngine內
WWW PC_picture = new WWW(file_on_PC);
yield return PC_picture;//等待圖片路徑載入完成才繼續下面的步驟
picture = PC_picture.texture;//載入圖片
show.mainTexture = picture;//顯示圖片
}
private IEnumerator show_on_web_picture()
{
//引入檔案必須使用WWW類別,此類別放在UnityEngine內
WWW web_picture = new WWW(file_on_web);
yield return web_picture;//等待圖片路徑載入完成才繼續下面的步驟
picture = web_picture.texture;//載入圖片
show.mainTexture = picture;//顯示圖片
}
void OnGUI()
{
if (GUI.Button(new Rect(0, 0, 100, 50), "電腦上的圖片") == true)
StartCoroutine(show_on_PC_picture());
if (GUI.Button(new Rect(0, 70, 100, 50), "網路上的圖片") == true)
StartCoroutine(show_on_web_picture());
}
}
編寫好後存檔,將此script拖到UI Root上,執行!
剛執行時由於還沒載入圖片,所以呈現一片黑
按下"電腦上的圖片"時...
按下"網路上的圖片"時...
任意調整視窗大小,可以發現圖片也跟著視窗改變了大小!
(註1)
請看紅色框框的地方,Texture要顯示的圖片都是在UITexture的Texture上設定,所以若要控制圖片顯示的位置,則必須產生UITexture的物件,再由此物件去引入圖片。