当前位置: 首页 > news >正文

Unity资源路径与读取

Unity资源路径有:

1、StreamingAssets:只读,一般用于存放应用程序运行时需要加载的资源文件,可以通过Application.streamingAssetsPath来获取。

2、PersistentDataPath:可读写,一般用于存放应用程序运行时生成或下载的文件,可以通过Application.persistentDataPath来获取。

3、DataPath:应用程序的安装目录,它包含了应用程序的可执行文件和默认资源文件,可以通过Application.dataPath来获取。

4、TemporaryCachePath:临时缓存目录,用于存放临时文件,可以通过Application.temporaryCachePath来获取。

不同平台中资源路径的实际路径是不一样的,可参考下表:

api:Application.dataPath

Application.streamingAssetsPath

Application.persistentDataPath
Windows

例:C:/Projects/YourProject/

Assets

例:

C:/Projects/YourProject/

Assets/StreamingAssets

例:

C:/Users/YourUsername/AppData/

LocalLow/CompanyName/

YourProjectName

iOS

例:

/var/containers/Bundle/

Application/AppId/

YourProjectName.app/

Data

例:

/var/containers/Bundle/

Application/AppId/

YourProjectName.app/

Data/Raw/

StreamingAssets

例:

/var/mobile/Containers/Data/

Application/AppId/Documents

Android

例:

/data/app/com.

companyname.

yourprojectname-1/base.apk

例:

/data/app/com.

companyname.

yourprojectname-1/base.apk!/assets

例:

/storage/emulated/0/Android/

data/com.companyname.

yourprojectname/files

上面的路径是相对路径,并不是具体的文件路径。具体的文件路径会根据应用程序安装位置而变化。所以要保证不出错,我们在读写资源的时候,最好的办法就是使用代码的API方法(即上表行一)创建资源路径和读取资源。

在Windows、iOS、Android和Mac等平台上,读取这些资源路径可以使用WWW类、UnityWebRequest类或者File类来进行读取,不过需要注意的是,在Android平台上,StreamingAssets路径下的文件是压缩的,无法直接使用File类读取,需要使用WWW类或UnityWebRequest类来进行读取。如:

string filePath1 = Path.Combine(Application.streamingAssetsPath, "filename.txt");
string filePath2 = Path.Combine(Application.persistentDataPath, "filename.txt");
string filePath3 = Path.Combine(Application.dataPath, "filename.txt");#if UNITY_ANDROID && !UNITY_EDITOR
// 在Android平台上,StreamingAssets路径下的文件是压缩的,需要使用WWW类来读取
StartCoroutine(LoadFile(filePath1));#else
// 在其他平台上,可以直接使用File类来读取
string files1= File.ReadAllText(filePath1);
string files2= File.ReadAllText(filePath2);
string files3= File.ReadAllText(filePath3);
#endif// 在Android平台上使用WWW类读取StreamingAssets路径下的文件
private IEnumerator LoadFile(string filePath)
{using (UnityWebRequest www = UnityWebRequest.Get(filePath)){yield return www.SendWebRequest();if (www.result == UnityWebRequest.Result.Success){string fileContent = www.downloadHandler.text;Debug.Log(fileContent);}else{Debug.LogError("Failed to load file: " + www.error);}}
}

http://www.lryc.cn/news/253426.html

相关文章:

  • “大+小模型”赋能油气行业高质量发展
  • 【win32_004】字符串处理函数
  • 如果不小心修改了按钮的名字并且忘记了原名字
  • opencv阈值处理
  • html之JS
  • SQL Server的安装和首个库的创建
  • STM32下载程序的五种方法
  • 基于springboot + vue大学生竞赛管理系统
  • 【详解】Spark数据倾斜问题由基础到深入详解-完美理解-费元星
  • xss漏洞后端进行html消毒
  • [论文精读]利用大语言模型对扩散模型进行自我修正
  • CTF特训日记day(4-6)
  • 【深度学习笔记】09 权重衰减
  • 三大兼容 | 人大金仓兼容+优化MySQL用户变量特性
  • Git介绍与安装使用
  • 理解DuLinkList L中的“”引用符号
  • 前端并发多个请求并失败重发
  • 【Qt开发流程】之对象模型2:属性系统
  • PHP之curl详细讲解
  • R语言30分钟上手
  • 上下拉电阻会增强驱动能力吗?
  • 题目:小明的彩灯(蓝桥OJ 1276)
  • 换元法求不定积分
  • 在Docker容器中启用SSH服务,实现外部访问的详细教程
  • Go 模块系统最小版本选择法 MVS 详解
  • ifstream读取txt中的中文数据转成QString出现乱码
  • UE4 双屏分辨率设置
  • $sformat在仿真中打印文本名的使用
  • 【Rust】结构体与枚举
  • CentOS7 防火墙常用命令