详解Unity中的StreamingAssets文件夹

Unity开发——资源加载之3种特殊文件夹及4种路径设置 摘要: 本文主要讲解Unity开发过程中编辑器下的三种(Assets、Resource、StreamingAssets)特殊文件夹,以及资源存储加载时设置的4种不同路径的讲解说明。 中间简要介绍了什么是AssetBundle资源。 关于数据解析存取,以及资源管理等具体操作,可以参考我的其他文章; 阅读详情
AI摘要

本文详细介绍了Unity中StreamingAssets文件夹的功能与使用方法,包括如何跨平台获取文件夹路径、支持的操作类型及读取限制,并提供了针对特定平台的解决方案。

前言

官方文档:https://docs.unity3d.com/Manual/StreamingAssets.html
这是一个只读、不可写的目录; 该文件夹下的资源会保持原始格式(比如图片不会被引擎进行纹理压缩);dll文件或者脚本放在该文件夹下也不会参与编译。

官方推荐使用Application.streamingAssetsPath来获得该文件夹的实际位置,其可以规避平台差异。
对于Unity Editor,Windows平台,其等价于:Application.dataPath+"/StreamingAssets"
对于macOS,其等价于:Application.dataPath+"/Resources/Data/StreamingAssets"
对于ios平台,其等价于:Application.dataPath + "/Raw";
对于android平台,其等价于:"jar:file://" + Application.dataPath + "!/assets/";

补充:
对于android平台

  • Application.streamingAssetsPath的详细格式形如:“jar:file:///data/app/包名-XXXXX/base.apk!/assets” 亦即 “jar:file://”+Application.dataPath+“!/assets”
  • Application.dataPath的详细格式形如:“/data/app/包名-XXXXX/base.apk”
  • Application.persistentDataPath的信息格式形如:“/storage/emulated/0/Android/data/包名/files”

使用

读写

StreamingAssets文件夹在所有平台上都不支持写入。

对于非Android和WebGL平台,支持File或者Stream的同步读取。同时File或者Directory类的方法也都可用。
但对于Android平台和WebGL平台,对StreamingAssets目录使用File类,Direcotry类的方法,以及Stream方式的读取都不支持。
针对Android平台,如果有同步读取的需求,可以考虑在游戏运行时,把StreamingAssets下的文件写入persistentDataPath,后续的读取和写入都在persistentDataPath进行。另一种方法就是针对Android平台提供额外的jar,对StreamingAssets下的文件进行同步操作。
或者对Android平台和WebGL平台使用UnityWebRequest(使用WWW类进行读取已废弃)对StreamingAssets下的文件进行读取,该方法是异步的。对于其它平台UnityWebRequest也是支持的。

使用UnityWebRequest读取

UnityWebRequest读取文件需要传入文件的URL,StreamingAssets目录不同平台对应的URL是不一样的,如下:

  • Windows平台 file:///D:/DATA/StreamingAssets/data.json
  • WebGl平台 http://localhost/StreamingAssets/data.json
  • Android平台 jar:file:///data/app/xxx!/assets/data.json
  • iOS平台 Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw

这时候最好通过构造Uri()的方式来规避平台的差异,获得真正的请求URL。如:

var uri = new System.Uri(Path.Combine(Application.streamingAssetsPath,“data.json”)).AbsoluteUri;

方法Path.Combine(path1,path2)在检测到path1不是以分隔符结尾的话,会自动补充分隔符,

AB读取的特例

有一个特例,就是StreamingAssets目录下的AssetBundle资源,无论什么平台,都可以通过AssetBundle.LoadFromFile(string path)该接口(该接口亦可读取其它具体目录中的资源,不仅仅是StremingAssets目录)同步读取。
但是对于anroid平台,path参数需要使用路径(称之为路径1)Application.dataPath + "!assets/XXXX"的格式才能读取。
其它平台path参数使用路径(称之为路径2)Application.streamingAssetsPath+"/XXXX"即可读取
(20220621补充:在较老版本Unity中,StreamingAssets目录下的AB资源若要通过AssetBundle.LoadFromFile进行读取,安卓平台上的路径确实需要使用Application.dataPath + “!assets/XXXX”(即上述删除线中提到的路径1);但经笔者测试,在Unity2020.3.20f1版本中,路径1、路径2两种方式都支持;在Unity2021.3.3f1中只支持路径2的方式)

Tables文件夹

笔者遇到过,在StreamingAssets目录下,创建文件夹名字为Tables,通过jar的方式读取其内的文件,无法读取。改成其它名字即可。暂时还不知道是什么原因,有知道的大佬告诉一下~~

【Unity】Unity中的StreamingAssets文件夹 StreamingAssets 文件夹是Unity项目中的一个特殊目录,用于存放需要在运行时访问的资源文件。这个文件夹中的文件会被逐字复制到目标平台的特定位置,并且保持原始格式,不会被引擎进行压缩或编译。 阅读详情

相关推荐

Unity解析StreamingAssets文件下json文件数据并使用

Unity解析json文件

w091253的博客 1496

unity StreamingAssets

StreamingAssets: 要说到StreamingAssets,其实和Resources还是蛮像的。同样作为一个只读的Unity3D的保留文件夹出现。不过两者也有很大的区别,那就是Resources文件夹中的内容在打包时会被压缩和加密。而StreamingAsset文件夹中的内容则会原封不动的打入包中,因此StreamingAssets主要用来存放一些二进制文件。下面也同样做一个简单的总结...

weixin_41798071的博客 8411

Unity跨平台开发必看:StreamingAssets文件夹在不同平台下的路径处理技巧(2023最新版)

本文详细解析了Unity中StreamingAssets文件夹在不同平台下的路径处理技巧,重点介绍了如何使用Application.streamingAssetsPath和UnityWebRequest实现跨平台资源加载。涵盖Windows、Android、iOS和WebGL等平台的路径差异,并提供了2023年最新的代码实践和优化策略,帮助开发者高效管理原始文件资源。

weixin_33738555的博客 413

StreamingAsset文件夹

Unity中的大部分资源在发布时都被整合到工程中,我们不能访问。但有时我们需要通过路径名访问放在目标设备中的文件。这些文件被存储在目标设备的文件系统中。 在Unity工程中, 放在StreamingAssets文件夹中的任何资源都将被原样复制到目标设备上的一个特定文件夹中。在任何平台中总可以统一使用Application.streamingAssetsPath 属性来获得这一文件夹路径。. 这...

嘿嘿 2万+

Unity项目文件夹结构规划与自动化管理最佳实践

在游戏开发中,项目结构与资源管理是影响团队协作效率和项目可维护性的基础工程。合理的目录设计遵循模块化与一致性原则,能够清晰划分功能边界,减少资源查找时间。从技术实现角度看,通过Unity编辑器扩展可以实现文件夹结构的自动化创建与资源导入设置的规则化,这不仅能提升开发效率,还能降低人为错误。结合版本控制系统(如Git)的协作需求,良好的结构设计有助于减少合并冲突,并为后续的资源分包与AssetBundle管理提供清晰蓝图。在实际应用场景中,这种系统化的文件夹管理方法尤其适用于中大型Unity项目,能有效管理脚

weixin_29007809的博客 325

【Unity3D】关于在 Android 平台加载 StreamingAssets 文件夹中的纹理的笔记

这是一个我花了至少五天的空闲时间才解决的问题,网上找到的博客大多对这一过程介绍得并不完整甚至有些存在错误。在此,谨以此博客作为开发经验的记录,同时也自立门户发表一篇教程式的笔记。Android 平台的文件夹结构和路径访问方式是与 PC 端存在差异的,这也导致了对于开发和调试方面的不便。主要的差异表现在和等路径 API 的返回结果上。同时,对文件的操作,我们在较新版本的 Unity3D 中使用的 API 是类。以上就是本篇博客将会讨论的主要内容。

Duawieh的博客 6566

Unity 从StreamingAssets文件夹和PersistentData文件夹 保存读取AssetBundle资源 路径详解...

项目中的资源一般我们打包成AssetBundle格式 方便我们加载和热更 而AssetBundle文件 一般保存在StreamingAssets文件夹或PersistentData文件夹 首先我们看这两个文件夹有什么区别 StreamingAssets 可读取、不可写入 工程Assets根目录下StreamingAssets文件夹...

weixin_30690833的博客 1412

【Unity基础】Unity中的特殊文件夹详解

本文介绍了Unity项目中的特殊文件夹

Tealc 2122

Unity 关于安卓和各平台读写本地json文件,WWW读取本地文件,Unity各路径API(persistentDataPath,StreamingAssets文件夹),目前较完整的详解

关键点: ···C# API  (StreamReader\ StreamWriter \ System.Text.Encoding\String.Split) ···Unity API ( JsonUtility.fromjson \jsonUtility.tojson \ WWW ) ··UnityAPI 提供的路径参考(常用的): Application.dataPath  A

leosheldon的博客 1万+

静态时序分析(Static Timing Analysis, STA):简介及内容导航

静态时序分析(简称STA)是用来验证数字设计时序的技术之一,另外一种验证时序的方法是时序仿真,时序仿真可以同时验证功能和时序。“时序分析”这个术语就是用来指代“静态时序分析“或”时序仿真“这两种方法之一,简单来说,时序分析的目的就是为了解决设计中的各种时序问题。STA被称为静态的原因是其对于设计的分析是静态地执行的,并不依赖于施加在输入端口上的激励。相比之下,时序仿真则可以被视作动态地执行对设计的分析,具体过程描述如下:施加一组激励,观察在这组激励下电路行为是否符合要求,然后换一组激。

Starry__的博客 1986

LSM6DS3TR-C IMU传感器入门:从MEMS原理到姿态解算实战

惯性测量单元(IMU)是现代智能设备实现运动感知的核心部件,其基础原理基于微机电系统(MEMS)技术。MEMS加速度计通过检测质量块在惯性力作用下的位移来测量线性加速度,而陀螺仪则利用科里奥利力效应感知角速度。这种技术使得微型化、低成本的6自由度运动测量成为可能,为机器人、无人机、可穿戴设备等提供了关键的空间姿态和运动状态信息。在实际工程中,开发者需要掌握I2C/SPI通信协议、传感器数据读取与校准,并通过互补滤波等算法融合加速度计和陀螺仪数据,实现稳定的姿态解算。LSM6DS3TR-C作为一款高性价比的6

weixin_28684655的博客 595

Unity特殊文件夹全解析:从Assets到Addressables的避坑指南

在Unity游戏开发中,资源管理与项目架构是构建稳定高效项目的基石。其核心原理在于理解Unity引擎的资源管线与编译流程,它们共同决定了资源如何被导入、引用、编译与打包。掌握这些机制的技术价值在于能有效规避运行时错误、优化应用体积并提升团队协作效率,尤其在移动平台开发与大型项目管理中至关重要。常见的应用场景包括动态资源加载、多平台适配、热更新实现以及代码模块化管理。本文聚焦于Unity特殊文件夹这一核心主题,深入剖析Assets、Resources、StreamingAssets等关键目录的规则与最佳实践,

weixin_30617797的博客 350

压电阀控制器设计-总章

本文章用于回顾记录本人制作压电阀控制器的关键技术,本人所制作压电阀控制器已经上市得到应用,特在此对一些关键技术进行回顾记录,欢迎从事压电控制及压电阀相关人员一起讨论

qq_42712859的博客 849

Unity基础:Project窗口与Assets目录——资源管理入门

本文介绍了Unity编辑器中Project窗口和Assets目录的基础使用方法。Project窗口采用双面板布局,左侧为文件夹树,右侧显示资源内容,支持图标和列表视图切换。文章详细讲解了资源图标识别、搜索筛选功能、标签管理以及Assets目录的组织结构,推荐了合理的资源分类方式,并解释了Resources、Editor、Plugins等Unity特殊文件夹的作用。掌握这些资源管理技巧能显著提升Unity开发效率。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 1万+

LIGGGHTS颗粒模拟入门:从DEM原理到工程实践

离散元法(DEM)是一种用于模拟颗粒物质行为的数值方法,其核心原理是通过计算每个颗粒的运动和相互作用来预测颗粒系统的宏观行为。该方法基于牛顿第二定律和接触力学模型,能够精确描述颗粒间的碰撞、摩擦和粘结等微观机制。在工程实践中,DEM技术为优化工业设备设计、预测材料流动和减少实验成本提供了重要价值。它广泛应用于制药造粒、矿石破碎、粉体输送和农业加工等领域,帮助工程师和研究人员深入理解颗粒系统的复杂动力学。LIGGGHTS作为一款基于LAMMPS的开源DEM软件,继承了其高效的并行计算架构,并针对颗粒模拟进行了

weixin_33979203的博客 416

华为面试手撕真题【字符串压缩】

华为面试手撕真题【字符串压缩】

MISAYAONE的博客 1万+

Unity StreamingAssets文件读取全平台解决方案

StreamingAssets是Unity中用于存放只读原始资源的关键目录,其本质并非普通文件夹,而是跨平台打包后被压缩嵌入APK或IPA的原始字节流。由于Android的APK ZIP结构、iOS的App Sandbox沙盒机制以及Windows/macOS本地路径差异,直接使用File API会导致404、空内容或权限异常。技术价值在于提供热更新友好、安全合规、平台抽象的资源访问通道;典型应用场景包括JSON配置加载、多语言CSV解析、预设数据初始化等。本文聚焦StreamingAssets路径解析、U

weixin_29015051的博客 274

VS code 调试显示preLaunchTask“g++“已终止,退出代码为-1。 生成‘... .exe‘文件错误

总结: 以后每个工程都需要按照这样的流程:创建一个.c/.cpp文件 -> F5运行 -> 配置tasks.json文件-> launch.json文件 -> 运行

qq_45151652的博客 2513

AssetRipper完整教程:如何把一个Data文件夹拖进去,还原出模型、纹理和脚本

你想从Unity游戏里取出模型、纹理和脚本来分析,但文件打开后是一堆二进制。AssetRipper是图形化Unity文件分析工具:把Data文件夹或AssetBundle拖进窗口,就能还原其中的场景、模型、贴图、音频和C#代码。本文带你走完从启动到拿到可导出资源包的完整流程。 ## 🔧 准备工作:动手前核对这4项 1. **安装Unity Editor,且版本不低于目标游戏**。AssetR

gitblog_01081的博客 298

基于STM32、HAL库的ZMOD4510AI4R气体传感器驱动程序设计

ZMOD4510AI4R是Renesas公司推出的一款数字空气质量传感器,主要用于检测臭氧(O₃)和总挥发性有机化合物(TVOC)浓度。(status & 0x80)) // 检查数据就绪位。// 等待测量完成 (实际应用中应该使用非阻塞方式)// 转换为ppb (简化转换,实际应根据传感器文档校准)* @param hzmod: ZMOD4510句柄。* @param tvoc: TVOC浓度(ppb)* @param ozone: 臭氧浓度(ppb)* @param hi2c: I2C句柄。

corlin6688的博客 311

上位机图像处理和嵌入式模块部署(开篇)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 图像处理是现实生活当中很实用的一门技术。工业上一般采用的是机器视觉,以传统算法和光源控制为主,部分采用了深度学习技术。而生活当中,则主要以二维码识别、人脸识别、车牌识别和ocr识别为主,这中间深度学习与AI扮演了很重要的角色。过去,市场上的商业收费软件,主要还是以传统设备厂商提供的上位机软件为主,那这一部分是不是结合最新的npu技术,应该做出一些新的东西出来呢?

嵌入式-老费,一个分享专业嵌入式知识的blog 1334

unity_基础_SteamingsAssets

Unity 中的 StreamingAssets 文件夹是一个特殊的只读文件夹,主要用于存放一些在运行时需要直接访问的二进制文件,如数据或配置文件、图片、视频资源等12。

游戏全栈,技术合作 2404

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Unity StreamingAssets,persistentDataPath文件夹

本例测试在IOS端读取.txt文件 在开发时,需要在IOS端读取的文件文件一定要放在“StreamingAssets”文件夹下(在安装时IOS会自动将StreamingAssets文件夹下的文件放到相应的平台路径),没有该文件夹自己在Assets下创建 using UnityEngine; using System.Collections; using System; usi

lq 7143

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

unity文件操作路径之StreamingAssets文件夹

StreamingAssets,在不同的平台上面 (Windows, Ios ,Android),该目录最终发布的位置不同,所以读取的方法也不同。 WWW是异步加载所以执行加载命令式不能直接执行读取解析操作,要等待 WWW www = new WWW(filePath); yield return www; // while (!www.isDone) {} result = www.text; Android之所以不支持C# IO流 方式读取StreamingAssets下的文件,是因为Android手

weixin_42565127的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Unity 中的Resources 和 StreamingAssets两个资源文件夹

在 Unity 中,Resources 和 StreamingAssets 是两个预定义的特殊文件夹,核心作用都是存放「运行时需要动态加载的资源」,但二者的设计逻辑、资源处理方式、使用场景差异极大。本质:Unity 预留的「原始资源目录」,名称必须严格为 StreamingAssets(大小写敏感),仅能有一个(Assets/StreamingAssets)。适合存放「无需 Unity 序列化的原始文件」(如视频、音频、配置文件、AssetBundle 包)。不支持热更新(资源打包进主包,无法单独替换);

zyh______的博客 1306
上一篇: Intellij Idea快捷键
下一篇: Unity3D和Android原生代码互操作
iningwei
博客等级 码龄10年 1999粉丝 327原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iningwei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值