Unity 中使用 UnityWebRequest 加载 StreamingAssets 文件夹中的图片

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


一、先检查【打包输出文件夹】(最重要!)

打开你 WebGL 打包出来的目录,看里面有没有:

复制代码
打包输出文件夹
├ StreamingAssets   ✅ 这个文件夹必须存在!
│  └ myimg.png      ✅ 文件必须在这里!

二、完整代码(协程,RawImage,WebGL / 编辑器 / Windows 通用)

代码如下(示例):

c 复制代码
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Networking;
using System.Collections;
using System.IO;

public class LoadStreamingAssetsImg : MonoBehaviour
{
    public RawImage rawImage;
    // 图片在StreamingAssets里面的相对路径
     string imgName = "myimg.jpg";
    public Button button;
    private void Start()
    {
        button.onClick.AddListener(() => {
            AudioManager.Instance.PlayShoot(0);
            UICover.Instance.SetState(true);
            Destroy(this.gameObject);
        });
        StartCoroutine(LoadImg());
    }
   
    IEnumerator LoadImg()
    {
        // WebGL下 streamingAssetsPath 是 http 地址开头,直接拼接
        string filePath = Path.Combine(Application.streamingAssetsPath, imgName);
        Debug.Log("加载地址:" + filePath);

        using (var req = UnityWebRequestTexture.GetTexture(filePath))
        {
            yield return req.SendWebRequest();

            if (req.result == UnityWebRequest.Result.Success)
            {
                // 销毁旧贴图防内存泄漏
                if (rawImage.texture != null)
                {
                    Destroy(rawImage.texture);
                }
                Texture2D tex = DownloadHandlerTexture.GetContent(req);
                rawImage.texture = tex;
               // rawImage.SetNativeSize();
            }
            else
            {
                Debug.LogError("加载失败:" + req.error + " | url:" + filePath);
            }
        }
    }
}

如果是 Image(Sprite)版本

下面展示一些 内联代码片。

复制代码
Texture2D tex = DownloadHandlerTexture.GetContent(uwr);
Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f));
GetComponent<Image>().sprite = sprite;

总结

Player Settings → WebGL → Compression Format = Disabled(本地测试首选;Gzip 需要服务器配置 MIME 头,本地测试容易 404)

相关推荐
北里闻箫3 小时前
推荐一款游戏引擎,一剑十八年引擎(YiJian18-Engine) - 跨平台2D/3D ECS 游戏引擎
3d·游戏引擎
淡海水14 小时前
07-02-源码-.NET Core GC分配路径
算法·unity·c#·.netcore·gc·1024程序员节
FFFFujige17 小时前
【Unity】基于Dots + Luban的Buff模块
unity·游戏引擎
紫龙大侠17 小时前
Unity许可证文件(激活成功后)默认保存位置
unity
Msir_Modern21 小时前
Noita 元胞沙盒笔记
算法·unity·c#·游戏引擎·元胞自动机
Oiiouui1 天前
Godot-GridGame架构逻辑层与实体/物品层篇
架构·游戏引擎·godot
天天进步20151 天前
Unity 2020.3 反复提示安全模式:一次 CS0009 与 DLL 文件占用的排查记录
unity·1024程序员节
true...1 天前
虚幻还原默认视角
游戏引擎·虚幻
淡海水1 天前
07-04-源码-.NET Core GC清扫与压缩
unity·架构·c#·.netcore·gc·1024程序员节