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

Unity3D生成APK时JSON文件无法读取问题咨询

Unity APK打包后JSON文件丢失的解决方法

问题根源

Unity编辑器模式下可以直接访问Assets根目录的文件,但打包APK时,只有放在Resources或StreamingAssets这类特殊目录的文件才会被默认包含进安装包,普通Assets根目录的文件会被Unity忽略,这就是你解压APK找不到JSON文件的原因。

解决方案

1. 移至Resources目录(推荐小文件使用)

  • 新建Assets/Resources文件夹(如果不存在),将JSON文件移入其中
  • 读取时使用Resources.Load<TextAsset>接口,注意不要带.json后缀:
    TextAsset jsonAsset = Resources.Load<TextAsset>("YourJsonFileName");
    if (jsonAsset != null)
    {
        string jsonContent = jsonAsset.text;
        // 这里用JsonUtility/Newtonsoft.Json等工具解析JSON内容
    }
    else
    {
        Debug.LogError("无法找到目标JSON文件");
    }
    
  • 注意:Resources目录的文件会被Unity打包进资源包,不会以单独的.json文件形式存在,所以解压APK看不到是正常的。

2. 移至StreamingAssets目录(推荐大文件/需保留原始格式使用)

  • 新建Assets/StreamingAssets文件夹,将JSON文件移入其中
  • Android平台(Oculus属于Android)下需用UnityWebRequest读取(不能直接用File类):
    IEnumerator LoadJsonFromStreamingAssets()
    {
        string filePath = Path.Combine(Application.streamingAssetsPath, "YourFile.json");
        using (UnityWebRequest www = UnityWebRequest.Get(filePath))
        {
            yield return www.SendWebRequest();
            
            if (www.result == UnityWebRequest.Result.Success)
            {
                string jsonContent = www.downloadHandler.text;
                // 解析JSON内容
            }
            else
            {
                Debug.LogError("JSON读取失败: " + www.error);
            }
        }
    }
    
  • 优势:文件会以原始格式存放在APK的assets/StreamingAssets目录下,解压APK可以直接找到。

3. 调整导入设置(不推荐,非规范做法)

如果一定要放在Assets根目录,选中JSON文件,在Inspector面板设置:

  • Import Type改为Text
  • 确保Asset Bundle分配了有效的打包分组
    这种方式容易出错,不如前两种目录规范可靠。

额外注意

  • 打包前先在Unity编辑器内用对应读取逻辑测试,确保能正常加载,编辑器内测试通过的话,打包后逻辑一致。
  • Resources目录的文件会被压缩,StreamingAssets目录的文件保持原始大小,可根据文件大小选择合适的目录。

内容的提问来源于stack exchange,提问作者Ricker2020

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:47:42