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     }

猜你喜欢

转载自www.cnblogs.com/xiaoyulong/p/9460052.html