提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、先检查【打包输出文件夹】(最重要!)
- [二、完整代码(协程,RawImage,WebGL / 编辑器 / Windows 通用)](#二、完整代码(协程,RawImage,WebGL / 编辑器 / Windows 通用))
- 总结
一、先检查【打包输出文件夹】(最重要!)
打开你 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)