一.在项目根目录中创建Resources文件夹来保存文件。
可以使用Resources.Load("文件名字,注:不包括文件后缀名");把文件夹中的对象加载出来。
注:此方可实现对文件实施“增删查改”等操作,但打包后不可以更改了。

二.直接放在项目根路径下来保存文件
在直接使用Application.dataPath来读取文件进行操作。
注:移动端是没有访问权限的。

三.在项目根目录中创建StreamingAssets文件夹来保存文件。
1.可使用Application.dataPath来读取文件进行操作。
2.直接使用Application.streamingAssetsPath来读取文件进行操作。
注:此方法在pc/Mac电脑中可实现对文件实施“增删查改”等操作,但在移动端只支持读取操作。

四.使用Application.persistentDataPath来操作文件(荐)
该文件存在手机沙盒中,因为不能直接存放文件,
1.通过服务器直接下载保存到该位置,也可以通过Md5码比对下载更新新的资源
2.没有服务器的,只有间接通过文件流的方式从本地读取并写入Application.persistentDataPath文件下,然后再通过Application.persistentDataPath来读取操作。
注:在Pc/Mac电脑 以及android跟Ipad、ipone都可对文件进行任意操作,另外在IOS上该目录下的东西可以被iCloud自动备份。

五.使用Application.temporaryCachePath来操作文件

操作方式跟上面Application.persistentDataPath类似。除了在IOS上不能被iCloud自动备份。

IOS:
Application.dataPath : Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data
Application.streamingAssetsPath : Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw
Application.persistentDataPath : Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
Application.temporaryCachePath : Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Library/Caches

android:
Application.dataPath : /data/app/xxx.xxx.xxx.apk
Application.streamingAssetsPath : jar:file:///data/app/xxx.xxx.xxx.apk/!/assets
Application.persistentDataPath : /data/data/xxx.xxx.xxx/files
Application.temporaryCachePath : /data/data/xxx.xxx.xxx/cache

Windows Web Player:
Application.dataPath : file:///D:/MyGame/WebPlayer (即导包后保存的文件夹,html文件所在文件夹)
Application.streamingAssetsPath :
Application.persistentDataPath :
Application.temporaryCachePath :

注意:
Application.persistentDataPath 才是移动端可用的保存生成文件的地方
放到resource中打包后不可以更改了
放到Application .dataPath中移动端是没有访问权限的

===================================================
如何查看iPhone文件存放目录?首先需要越狱,越狱后打开iPhone手机目录,找到/Applications目录下就是iPhone所有软件目录。

iPhone文件目录介绍

1、/Applications

常用软件的安装目录。

2. /private ar/ mobile/Media /iphone video Recorder

iphone video Recorder录像文件存放目录。

3. /private ar/ mobile/Media /DCIM

相机拍摄的照片文件存放目录。

4、/privatear/ mobile /Media/iTunes_Control/Music

iTunes上传的多媒体文件(例如MP3、MP4等)存放目录,文件没有被修改,但是文件名字被修改了,直接下载到电脑即可读取。

5、/private ar/root/Media/EBooks

熊猫看书存放目录。

6、/Library/Ringtones

系统自带的来电铃声存放目录。

7、/System/Library/Audio/UISounds

短信记其它系统默认效果铃声(m4r铃声文件改扩展名为.caf)短信铃声文件名为sms-received开头的caf文件。

8、/privatear/ mobile /Library/AddressBook

系统电话本的存放目录。

/privatear/mobile/Library/SMS

短信存放目录

9、/private ar/ mobile/Media /iphone Recorder

iPhone Recorder录音软件文件存放目录

10、/Applications/Preferences.app/zh_CN.lproj

软件Preferences.app的中文汉化文件存放目录

11、/Library/Wallpaper

系统q1ang纸的存放目录

12、/System/Library/Audio/UISounds

系统声音文件的存放目录

13、/privatear/root/Media/PXL

ibrickr上传安装程序建立的一个数据库,估计和windows的uninstall记录差不多。

14、/bin

和linux系统差不多,是系统执行指令的存放目录。

15、/privatear/ mobile /Library/SMS

系统短信的存放目录

16、/privatear/run

系统进程运行的临时目录?(查看这里可以看到系统启动的所有进程)

17、/privatear/logs/CrashReporter

系统错误记录报。 
若有不足欢迎指正!!!

一.在项目根目录中创建Resources文件夹来保存文件。
可以使用Resources.Load("文件名字,注:不包括文件后缀名");把文件夹中的对象加载出来。
注:此方可实现对文件实施“增删查改”等操作,但打包后不可以更改了。

二.直接放在项目根路径下来保存文件
在直接使用Application.dataPath来读取文件进行操作。
注:移动端是没有访问权限的。

三.在项目根目录中创建StreamingAssets文件夹来保存文件。
1.可使用Application.dataPath来读取文件进行操作。

[C#] 纯文本查看 复制代码
  1. #if UNITY_EDITOR
  2. string filepath = Application.dataPath +"/StreamingAssets"+"/my.xml";
  3. #elif UNITY_IPHONE
  4. string filepath = Application.dataPath +"/Raw"+"/my.xml";
  5. #elif UNITY_android
  6. string filepath = "jar:file://" + Application.dataPath + "!/assets/"+"/my.xml;
  7. #endif

2.直接使用Application.streamingAssetsPath来读取文件进行操作。
注:此方法在pc/Mac电脑中可实现对文件实施“增删查改”等操作,但在移动端只支持读取操作。

四.使用Application.persistentDataPath来操作文件(荐)
该文件存在手机沙盒中,因为不能直接存放文件,
1.通过服务器直接下载保存到该位置,也可以通过Md5码比对下载更新新的资源
2.没有服务器的,只有间接通过文件流的方式从本地读取并写入Application.persistentDataPath文件下,然后再通过Application.persistentDataPath来读取操作。
注:在Pc/Mac电脑 以及Android跟Ipad、ipone都可对文件进行任意操作,另外在IOS上该目录下的东西可以被iCloud自动备份。

五.使用Application.temporaryCachePath来操作文件

操作方式跟上面Application.persistentDataPath类似。除了在IOS上不能被iCloud自动备份。

下图是几种文件在Pc中路径的具体位置
<ignore_js_op>

其实,在前面我已经发过一篇《Unity中的Path对应各平台中的Path》的文章,大家可以看看,详细了解下unity在移动平台中的可操作的具体路径。
有直接给出各平台对应路径哟,方便调试查看。
好了,unity路径的使用以及注意点都总结了,现在还是送点干料给大家吧,里面都有详细注释,都是开发中常用的东西

本帖隐藏的内容

1.对文件的操作类,主要就是文流读取操作的一些东西(包括Assetbundle)
FileHelper.cs

[C#] 纯文本查看 复制代码
  1. using UnityEngine;
  2. using System.Collections;
  3. using System.IO;
  4. using System.Collections.Generic;
  5. using System;
  6. /// <summary>
  7. /// 使用Application.persistentDataPath方式来创建文件,读写Xml文件.
  8. /// 注Application.persistentDataPath末尾没有“/”符号
  9. /// </summary>
  10. public class FileHelper: MonoBehaviour
  11. {
  12. /// <summary>
  13. /// 动态创建文件夹.
  14. /// </summary>
  15. /// <returns>The folder.</returns>
  16. /// <param name="path">文件创建目录.</param>
  17. /// <param name="FolderName">文件夹名(不带符号).</param>
  18. public string CreateFolder(string path,string FolderName)
  19. {
  20. string FolderPath = path+FolderName;
  21. if(!Directory.Exists(FolderPath))
  22. {
  23. Directory.CreateDirectory(FolderPath);
  24. }
  25. return FolderPath;
  26. }
  27.  
  28. /// <summary>
  29. /// 创建文件.
  30. /// </summary>
  31. /// <param name="path">完整文件夹路径.</param>
  32. /// <param name="name">文件的名称.</param>
  33. /// <param name="info">写入的内容.</param>
  34. public void CreateFile(string path,string name,string info)
  35. {
  36. //文件流信息
  37. StreamWriter sw;
  38. FileInfo t = new FileInfo(path+name);
  39. if(!t.Exists)
  40. {
  41. //如果此文件不存在则创建
  42. sw = t.CreateText();
  43. }
  44. else
  45. {
  46. //如果此文件存在则打开
  47. sw = t.AppendText();
  48. }
  49. //以行的形式写入信息
  50. sw.WriteLine(info);
  51. //关闭流
  52. sw.Close();
  53. //销毁流
  54. sw.Dispose();
  55. }
  56.  
  57. /// <summary>
  58. /// 读取文件.
  59. /// </summary>
  60. /// <returns>The file.</returns>
  61. /// <param name="path">完整文件夹路径.</param>
  62. /// <param name="name">读取文件的名称.</param>
  63. public ArrayList LoadFile(string path,string name)
  64. {
  65. //使用流的形式读取
  66. StreamReader sr =null;
  67. try{
  68. sr = File.OpenText(path+name);
  69. }catch(Exception e)
  70. {
  71. //路径与名称未找到文件则直接返回空
  72. return null;
  73. }
  74. string line;
  75. ArrayList arrlist = new ArrayList();
  76. while ((line = sr.ReadLine()) != null)
  77. {
  78. //一行一行的读取
  79. //将每一行的内容存入数组链表容器中
  80. arrlist.Add(line);
  81. }
  82. //关闭流
  83. sr.Close();
  84. //销毁流
  85. sr.Dispose();
  86. //将数组链表容器返回
  87. return arrlist;
  88. }
  89. //写入模型到本地
  90. IEnumerator loadassetbundle(string url)
  91. {
  92. WWW w = new WWW(url);
  93. yield return w;
  94. if (w.isDone)
  95. {
  96. byte[] model = w.bytes;
  97. int length = model.Length;
  98. //写入模型到本地
  99. CreateassetbundleFile(Application.persistentDataPath, "Model.assetbundle", model,length);
  100. }
  101. }
  102. /// <summary>
  103. /// 获取文件下所有文件大小
  104. /// </summary>
  105. /// <param name="filePath"></param>
  106. /// <returns></returns>
  107. public int GetAllFileSize(string filePath)
  108. {
  109. int sum = 0;
  110. if (!Directory.Exists(filePath))
  111. {
  112. return 0;
  113. }
  114.  
  115. DirectoryInfo dti = new DirectoryInfo(filePath);
  116.  
  117. FileInfo[] fi = dti.GetFiles();
  118.  
  119. foreach (FileInfo f in fi)
  120. {
  121.  
  122. sum += Convert.ToInt32(f.Length / 1024);
  123. }
  124.  
  125. DirectoryInfo[] di = dti.GetDirectories();
  126.  
  127. if (di.Length > 0)
  128. {
  129. for (int i = 0; i < di.Length; i++)
  130. {
  131. sum += GetAllFileSize(di.FullName);
  132. }
  133. }
  134. return sum;
  135. }
  136. /// <summary>
  137. /// 获取指定文件大小
  138. /// </summary>
  139. /// <param name="FilePath"></param>
  140. /// <param name="FileName"></param>
  141. /// <returns></returns>
  142. public int GetFileSize(string FilePath, string FileName)
  143. {
  144. int sum = 0;
  145. if (!Directory.Exists(FilePath))
  146. {
  147. return 0;
  148. }
  149. else
  150. {
  151. FileInfo Files = new FileInfo(@FilePath + FileName);
  152. sum += Convert.ToInt32(Files.Length / 1024);
  153. }
  154. return sum;
  155. }
  156. void CreateassetbundleFile(string path, string name, byte[] info, int length)
  157. {
  158. //文件流信息
  159. //StreamWriter sw;
  160. Stream sw;
  161. FileInfo t = new FileInfo(path + "//" + name);
  162. if (!t.Exists)
  163. {
  164. //如果此文件不存在则创建
  165. sw = t.Create();
  166. }
  167. else
  168. {
  169. //如果此文件存在则打开
  170. //sw = t.Append();
  171. return;
  172. }
  173. //以行的形式写入信息
  174. sw.Write(info, 0, length);
  175. //关闭流
  176. sw.Close();
  177. //销毁流
  178. sw.Dispose();
  179. }
  180. //读取本地AssetBundle文件
  181. IEnumerator LoadAssetbundleFromLocal(string path, string name)
  182. {
  183. print("file:///" + path + "/" + name);
  184. WWW w = new WWW("file:///"+path + "/" + name);
  185. yield return w;
  186. if (w.isDone)
  187. {
  188. Instantiate(w.assetBundle.mainAsset);
  189. }
  190. }
  191. /// <summary>
  192. /// 删除文件.
  193. /// </summary>
  194. /// <param name="path">删除完整文件夹路径.</param>
  195. /// <param name="name">删除文件的名称.</param>
  196. public void DeleteFile(string path, string name)
  197. {
  198. File.Delete(path + name);
  199. }
  200. /// <summary>
  201. /// 删除文件
  202. /// </summary>
  203. /// <param name="path"></param>
  204. /// <param name="filesName"></param>
  205. /// <returns></returns>
  206. public bool DeleteFiles(string path, string filesName)
  207. {
  208. bool isDelete = false;
  209. try
  210. {
  211. if (Directory.Exists(path))
  212. {
  213. if (File.Exists(path + "\\" + filesName))
  214. {
  215. File.Delete(path + "\\" + filesName);
  216. isDelete = true;
  217. }
  218. }
  219. }
  220. catch
  221. {
  222. return isDelete;
  223. }
  224. return isDelete;
  225. }
  226. }

2.随机操作类
RandomHelper.cs

[C#] 纯文本查看 复制代码
  1. using UnityEngine;
  2. using System.Collections;
  3. /// <summary>
  4. /// 随机操作类
  5. /// </summary>
  6. public class RandomHelper
  7. {
  8. private static char[] constant = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
  9. /// <summary>
  10. /// 字符串随机
  11. /// </summary>
  12. /// <param name="Length">要随机的位数</param>
  13. /// <returns></returns>
  14. public string GenerateRandomNumber(int Length)
  15. {
  16. System.Text.StringBuilder newRandom = new System.Text.StringBuilder(62);
  17. for (int i = 0; i < Length; i++)
  18. {
  19. newRandom.Append(constant[Random.Range(0,62)]);
  20. }
  21. return newRandom.ToString();
  22. }
  23. private static char[] constant1 = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
  24. /// <summary>
  25. /// 数字随机
  26. /// </summary>
  27. /// <param name="Length">要随机的位数</param>
  28. /// <returns></returns>
  29. public string GenerateNumber(int Length)
  30. {
  31. System.Text.StringBuilder newRandom = new System.Text.StringBuilder(10);
  32. for (int i = 0; i < Length; i++)
  33. {
  34. newRandom.Append(constant1[Random.Range(0, 10)]);
  35. }
  36. return newRandom.ToString();
  37. }
  38. /// <summary>
  39. /// 字符串数组随机
  40. /// </summary>
  41. /// <param name="chars">数组</param>
  42. /// <param name="Length">随机的位数</param>
  43. /// <returns></returns>
  44. public string GetStrRandomSurname(string[] chars, int Length)
  45. {
  46. int count = chars.Length;
  47. System.Text.StringBuilder newRandom = new System.Text.StringBuilder(count);
  48.  
  49. for (int i = 0; i < Length; i++)
  50. {
  51. newRandom.Append(chars[Random.Range(0, count)]);
  52. }
  53. return newRandom.ToString();
  54. }
  55. /// <summary>
  56. /// 字符串*截取
  57. /// </summary>
  58. /// <param name="str">字符串</param>
  59. /// <returns></returns>
  60. public string[] getStringToList(string str)
  61. {
  62. return str.Split('*');
  63. }
  64. }

Unity数据存储路径总结的更多相关文章

  1. postgresql pgsql最新版安装指南及数据存储路径更改及主从配置

    postgresql pgsql最新版安装指南及数据存储路径更改及主从配置 安装指南 首先在apt的list添加你当前系统版本对应的apt列表 目前官网有16.04,14.04,12.04 分别对应下 ...

  2. mysql修改默认数据存储路径

    1.先关闭mysql服务 可cmd--services.msc进入关闭服务 或cmd命令输入net stop mysql57关闭服务 2.进入C:\ProgramData\MySQL\MySQL Se ...

  3. mysql修改数据存储路径报错处理

    Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'解决?: >>> vim ...

  4. 更改mysql数据存储路径

    1.检查mysql数据库存放目录 mysql -u root -prootadmin show variables like '%dir%'; quit; (查看datadir 那一行所指的路径) 2 ...

  5. C#与Unity 数据存储

    使用Json存储数据 1.创建Json文件,直接创建txt文件,将后缀名改为xx.json 2.Json文件的数据格式,中括号表示列表,即中括号下的每个逗号隔开的内容都是列表的每个元素,花括号表示对象 ...

  6. 【转载】变更MySql数据存储路径的方法

    1.在mysql安装目录下找到my.ini文件,更改#Path to the database root datadir="希望存放数据的地址" 2.将默认存放路径(一般为&quo ...

  7. windows mysql数据存储路径更改

    背景:之前服务器磁盘很小,随着数据量的不断增加,磁盘不够,所以新申请了更大的磁盘,然后需要将旧路径下的数据迁移到新磁盘上. 1.任务管理器-打开服务,找到mysql的启动项,停止服务,属性查看可执行文 ...

  8. CentOS7.X yum安装MySQL8.0 数据表不区分大小写切换默认存储路径

    查看当前系统版本的详细信息 # cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) yum源下载 地址:https://dev.m ...

  9. iOS开发简单高效的数据存储

    在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题,你是用什么方法来持久保存数据的?这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题,而且大家对这个问题的热情持续高涨.本文主要从概 ...

随机推荐

  1. 基于OWIN WebAPI 使用OAUTH2授权服务【授权码模式(Authorization Code)】

    之前已经简单实现了OAUTH2的授权码模式(Authorization Code),但是基于JAVA的,今天花了点时间调试了OWIN的实现,基本就把基于OWIN的OAUHT2的四种模式实现完了.官方推 ...

  2. easyui combobox 中实现 checkbox

    $('#cc').combobox({ url:'combobox_data1.json', method:'get', valueField:'id', textField:'text', pane ...

  3. 实验四 时序逻辑电路的VHDL设计

    一.实验目的 熟悉QuartusⅡ的VHDL文本设计过程,学习简单时序逻辑电路的设计.仿真和测试方法. 二.实验 1. 基本命题 用VHDL文本设计触发器,触发器的类型可任选一种.给出程序设计.仿真分 ...

  4. Failed to initialize the Common Language Runtime

    今天在SQL Server 2008中执行存储过程的时候报以下错误: Msg , Level , State , Procedure usp_QueryRealTimeRoomInfo, Line F ...

  5. [转]Sublime Text 2 设置文件详解

    Sublime Text 2是那种让人会一眼就爱上的编辑器,不仅GUI让人眼前一亮,功能更是没的说,拓展性目前来说也完全够用了,网上介绍软件的文章和推荐插件的文章也不少,而且很不错,大家可以去找找自己 ...

  6. [游戏学习28] MFC 时钟

    >_<:这是一个时钟小程序 >_<:通过调用获得系统时间然后经过计算得出当前时间,然后再以3个圆环表示时分秒. >_<:TAO_CLOCK.h class CMyA ...

  7. Jenkins2 - 下载与启动

    文章来自:http://www.ciandcd.com 文中的代码来自可以从github下载: https://github.com/ciandcd 本文将引导jenkins初学者安装和配置jenki ...

  8. Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64

    Arm处理器,因为其低功耗和小尺寸而闻名,几乎所有的手机处理器都基于arm,其在嵌入式系统中的应用非常广泛,它的性能在同等功耗产品中也很出色. Armv6.armv7.armv7s.arm64都是ar ...

  9. iOS-触摸事件、手势识别、摇晃事件、耳机线控

    概览 iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计.今天我们就针对iOS的触摸事件(手势操作).运动事件. ...

  10. hashcode详解

    序言 写这篇文章是因为在看hashMap源码时遇到有什么hashcode值,然后就去查,脑袋里面是有映像的,不就是在Object中有equals和hashcode方法嘛,这在学java基础的时候就遇到 ...