网站开发建设招聘要求黄石建设信息网站
- 作者: 五速梦信息网
- 时间: 2026年03月21日 07:35
当前位置: 首页 > news >正文
网站开发建设招聘要求,黄石建设信息网站,google关键词分析,宜昌网站建设开发今天突然想到这个路径Application.persistentDataPath#xff0c;热更的重要路径#xff0c;该文件夹可读可写#xff0c;在移动端唯一一个可读写操作的文件夹。移动端可以将本地的资源#xff08;资源MD5值配置表#xff09;等一些文件放到StreamingAssets文件夹下#…今天突然想到这个路径Application.persistentDataPath热更的重要路径该文件夹可读可写在移动端唯一一个可读写操作的文件夹。移动端可以将本地的资源资源MD5值配置表等一些文件放到StreamingAssets文件夹下通过Copy到persistentDataPath下与服务器的版本文件配置表作比对完成资源的热更。为什么不在StreamingAsset文件夹下直接操作因为该文件夹只读不可写资源无法更新进去。为什么不在persistentDataPath文件夹操作因为该文件夹是apk安装以后才会形成的一个文件夹无法提前创建。本来以为persistentDataPath文件夹是每次打开游戏形成的里面的数据是只在打开游戏期间临时保存关闭游戏就会消除今天做个小测试,原来该文件夹是安装完apk以后形成里面的数据持久存在。public Text ShowText;public Button WriteBtn, ReadBtn, QuitBBtn;private void Start(){WriteBtn.onClick.AddListener(WriteEvent);ReadBtn.onClick.AddListener(ReadEvent);QuitBBtn.onClick.AddListener(QuitEvent);}private void WriteEvent(){StreamWriter st File.CreateText(Application.persistentDataPath Test.txt);st.Write(测试一下);st.Close();}private void ReadEvent(){ShowText.text File.ReadAllText(Application.persistentDataPath Test.txt);}private void QuitEvent(){Application.Quit();}先写入该文件夹一些内容退出游戏再次打开从该文件夹读取显示出来。事实证明该文件夹数据一直存在。Unity3D各平台Application.xxxPath的路径前几天我们游戏在一个同事的Android手机上启动时无法正常进入经查发现Application.temporaryCachePath和Application.persistentDataPath返回空字符串。便花时间认真研究了一下Unity3D的路径问题。我们常用的是以下四个路径Application.dataPathApplication.streamingAssetsPathApplication.persistentDataPathApplication.temporaryCachePath根据测试详细情况如下————————————————iOS:Application.dataPath /var/containers/Bundle/Application/app sandbox/xxx.app/DataApplication.streamingAssetsPath /var/containers/Bundle/Application/app sandbox/test.app/Data/RawApplication.temporaryCachePath /var/mobile/Containers/Data/Application/app sandbox/Library/CachesApplication.persistentDataPath /var/mobile/Containers/Data/Application/app sandbox/DocumentsiOS和Mac OS X不同于Windowsapp都是在一个沙盒空间中运行每个app也有一个独立的数据存储空间各app彼此不能互相访问、打扰。dataPath是app程序包安装路径app本身就在这里此目录是只读的。streamingAssetsPath是dataPath下的Raw目录。app的独立数据存储目录下有三个文件夹DocumentsLibrary和tmp。Documents目录这个目录用于存储需要长期保存的数据比如我们的热更新内容就写在这里。需要注意的是iCloud会自动备份此目录如果此目录下写入的内容较多审核的可能会被苹果拒掉。Library目录这个目录下有两个子目录Caches和Preferences。 Caches是一个相对临时的目录适合存放下载缓存的临时文件空间不足时可能会被系统清除Application.temporaryCachePath返回的就是此路径。我把热更新的临时文件写在这里等一个版本的所有内容更新完全后再把内容转移到Documents目录。 Preferences用于应用存储偏好设置用NSUserDefaults读取或设置。tmp目录临时目录存放应用运行时临时使用的数据。需要注意的是以上无论临时、缓存或者普通目录如果不需要的数据都请删除。不要占用用户的存储空间像微信就是坏榜样。下面是各路径对应的OC访问方法app安装路径: [[NSBundle mainBundle] resourcePath]app数据沙盒存储根目录: NSHomeDirectory()Documents: NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)Library: NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES)Caches: NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)tmp: NSTemporaryDirectory()Android:Application.dataPath /data/app/package name-1/base.apkApplication.streamingAssetsPath jar:file:///data/app/package name-1/base.apk!/assetsApplication.temporaryCachePath /storage/emulated/0/Android/data/package name/cacheApplication.persistentDataPath /storage/emulated/0/Android/data/package name/files看Android上的路径跟iOS有点类似简单说一下。Android的几个目录是apk程序包、内存存储(InternalStorage)和外部存储(ExternalStorage)目录。apk程序包目录: apk的安装路径/data/app/package name-n/base.apkdataPath就是返回此目录。内部存储目录: /data/data/package name-n/用户自己或其它app都不能访问该目录。打开会发现里面有4个目录需要root cache 缓存目录类似于iOS的Cache目录 databases 数据库文件目录 files 类似于iOS的Documents目录 shared_prefs 类似于iOS的Preferences目录用于存放常用设置比如Unity3D的PlayerPrefs就存放于此外部存储目录: 在内置或外插的sd上用户或其它app都可以访问外部存储目录又分私有和公有目录。 公有目录是像DCIM、Music、Movies、Download这样系统创建的公共目录当然你也可以像微信那样直接在sd卡根目录创建一个文件夹。好处嘛就是卸载app数据依旧存在。 私有目录在/storage/emulated/n/Android/data/package name/打开可以看到里面有两个文件夹cache和files。为什么跟内部存储目录重复了这是为了更大的存储空间以防内存存储空间较小。推荐把不需要隐私的、较大的数据存在这里而需要隐私的或较小的数据存在内部存储空间。下面是各路径对应的Java访问方法apk包内: AssetManager.open(String filename)内部存储: context.getFilesDir().getPath() or context.getCacheDir().getPath()外部存储: context.getExternalFilesDir(null).getPath() or context.getExternalCacheDir().getPath()理解了Android存储的原理最后来说说开头提到的bugApplication.temporaryCachePath/persistentDataPath返回空字符串。这其实因为权限的原因app没有声明访问外部存储空间的权限但是Application.temporaryCachePath/ ApplicationpersistentDataPath却想返回外部存储的路径。这是Unity3D的bug没有权限本应该抛出一个异常或者错误让开发者知道原因。经反复测试发现有【外置SD卡】的设备上如果声明读/写外部存储设备的权限会返回外部存储路径不声明则会返回内部存储路径这样不会有问题。而在【无外置SD卡】的设备上不管是否声明读/写外部存储设备的权限Application.temporaryCachePath/persistentDataPath都返回外部存储路径但是又没有权限就可能会导致返回null了之所以说可能是因为这个bug不是必现如果出现了设备重启之后就好了怀疑是linux设备mount问题。但是出了问题我们不能跟用户说你重启一下手机就好了。uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE /1Windows:Application.dataPath: 应用的appname_Data/Application.streamingAssetsPath: 应用的appname_Data/StreamingAssetsApplication.temporaryCachePath: C:\Users\username\AppData\Local\Temp\company name\product nameApplication.persistentDataPath: C:\Users\username\AppData\LocalLow\company name\product namePlayerPrefs路径(补充)Android: /data/data/pkg-name/shared_prefs/pkg-name.v2.playerprefs.xmliOS:/Library/Preferences/[bundle identifier].plistWindows:HKEY_CURRENT_USER/Software/CompanyName/ProductNameMac:~/Library/Preferences/com.CompanyName.ProductName.plist————————————————
相关文章
-
网站开发建设项目服务清单如果网站没有做icp备案会被处罚
网站开发建设项目服务清单如果网站没有做icp备案会被处罚
- 技术栈
- 2026年03月21日
-
网站开发建设价格网站建设公司宣传册
网站开发建设价格网站建设公司宣传册
- 技术栈
- 2026年03月21日
-
网站开发简历模板辽宁做网站
网站开发简历模板辽宁做网站
- 技术栈
- 2026年03月21日
-
网站开发建设专业的公司智冠宝企业网站管理系统
网站开发建设专业的公司智冠宝企业网站管理系统
- 技术栈
- 2026年03月21日
-
网站开发教学网站成都建站网站
网站开发教学网站成都建站网站
- 技术栈
- 2026年03月21日
-
网站开发进度计划是什么怎样做编辑发到网站
网站开发进度计划是什么怎样做编辑发到网站
- 技术栈
- 2026年03月21日






