NRE的编程笔记

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

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     }
复制代码

 

posted on   NRE  阅读(4997)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示