Unity加載外部圖片


在這里記錄一下在 Unity3D 中分別使用 WWW 和 IO 流加載外部圖片

 

使用 WWW 加載

    /// <summary>
    /// 使用 WWW 加載圖片,並賦值給 _rawImage
    /// </summary>
    /// <param name="_url">圖片地址</param>
    /// <param name="_rawImage"></param>
    /// <returns></returns>
    public static IEnumerator LoadTexture2DByWWW(string _url, RawImage _rawImage)
    {
        WWW _www = new WWW(_url);
        yield return _www;
        if (_www.error == null)
        {
            _rawImage.texture = _www.texture;
        }
        else
        {
            Debug.LogError(_www.error);
        }
    }
    /// <summary>
    /// 使用 WWW 加載圖片,並將圖片轉換成 Sprite 類型賦值給 _image
    /// </summary>
    /// <param name="_url">圖片地址</param>
    /// <param name="_image"></param>
    /// <returns></returns>
    public static IEnumerator LoadSpriteByWWW(string _url, Image _image)
    {
        WWW _www = new WWW(_url);
        yield return _www;
        if (_www.error == null)
        {
            _image.sprite = Sprite.Create(_www.texture, new Rect(0, 0, _www.texture.width, _www.texture.height), new Vector2(0.5f, 0.5f));
        }
        else
        {
            Debug.LogError(_www.error);
        }
    }

 

使用 IO 流加載

 1     /// <summary>
 2     /// 使用 IO 流加載圖片,並返回。
 3     /// </summary>
 4     /// <param name="_url">圖片地址</param>
 5     /// <returns></returns>
 6     public static Texture2D LoadTexture2DByIO(string _url)
 7     {
 8         //創建文件讀取流
 9         FileStream _fileStream = new FileStream(_url, FileMode.Open, FileAccess.Read);
10         _fileStream.Seek(0, SeekOrigin.Begin);
11         //創建文件長度緩沖區
12         byte[] _bytes = new byte[_fileStream.Length];
13         _fileStream.Read(_bytes, 0, (int)_fileStream.Length);
14         _fileStream.Close();
15         _fileStream.Dispose();
16         //創建Texture
17         Texture2D _texture2D = new Texture2D(1, 1);
18         _texture2D.LoadImage(_bytes);
19         return _texture2D;
20     }
21     /// <summary>
22     /// 使用 IO 流加載圖片,並將圖片轉換成 Sprite 類型返回
23     /// </summary>
24     /// <param name="_url">圖片地址</param>
25     /// <returns></returns>
26     public static Sprite LoadSpriteByIO(string _url)
27     {
28         Texture2D _texture2D = LoadTexture2DByIO(_url);
29         Sprite _sprite = Sprite.Create(_texture2D, new Rect(0, 0, _texture2D.width, _texture2D.height), new Vector2(0.5f, 0.5f));
30         return _sprite;
31     }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM