You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity打包APK后StreamingAssets文件夹丢失,无法读取本地资源

Unity Android打包后无法读取StreamingAssets的解决方法

核心原因

Android平台下,Unity的StreamingAssets文件夹内容不会以独立文件夹形式出现在手机存储中,而是被打包进APK的assets/bin/Data/StreamingAssets目录(或OBB包内),所以你在Android\obb目录找不到该文件夹是正常现象,问题出在读取方式错误,而非构建设置遗漏。

正确读取方式

必须使用Unity提供的Application.streamingAssetsPath路径配合UnityWebRequest(推荐)读取,不能直接用File类操作——因为Android平台下该路径是一个jar:file://协议的URL,而非本地文件路径。

读取JSON配置示例

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class StreamingAssetsLoader : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(LoadLocalConfig());
    }

    IEnumerator LoadLocalConfig()
    {
        // 自动适配平台的StreamingAssets路径
        string configPath = Application.streamingAssetsPath + "/your_config.json";
        
        using (UnityWebRequest request = UnityWebRequest.Get(configPath))
        {
            yield return request.SendWebRequest();

            if (request.result == UnityWebRequest.Result.Success)
            {
                string jsonContent = request.downloadHandler.text;
                // 这里写你的JSON解析逻辑
                Debug.Log("读取配置成功: " + jsonContent);
            }
            else
            {
                Debug.LogError("配置读取失败: " + request.error);
            }
        }
    }
}

读取本地图片示例

IEnumerator LoadLocalImage()
{
    string imagePath = Application.streamingAssetsPath + "/your_image.png";
    
    using (UnityWebRequest request = UnityWebRequestTexture.GetTexture(imagePath))
    {
        yield return request.SendWebRequest();

        if (request.result == UnityWebRequest.Result.Success)
        {
            Texture2D texture = DownloadHandlerTexture.GetContent(request);
            // 将纹理赋值给RawImage或转换为Sprite使用
            // rawImageComponent.texture = texture;
        }
        else
        {
            Debug.LogError("图片读取失败: " + request.error);
        }
    }
}

构建设置检查

如果确认读取方式正确仍有问题,可检查以下设置:

  • 确认Player Settings → Write Permission设置为Internal或External (SDCard)(不影响StreamingAssets读取,但避免其他权限问题)。
  • 若APK体积超过100MB勾选了Split Application Binary(分割OBB),无需额外设置,Unity会自动处理OBB内的StreamingAssets路径。
  • 检查StreamingAssets内的文件是否都在Unity Project窗口中,且导入设置正确(如JSON的Import Type设为Text,图片格式设置符合要求),打包时Unity会自动包含这些文件。

验证打包内容

可将APK后缀改为.zip解压,查看assets/bin/Data/StreamingAssets目录,若能看到你的配置文件和图片,说明打包成功,问题仅在于读取逻辑。

内容的提问来源于stack exchange,提问作者the-tech-seeker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 07:50:35