温馨提示:这篇文章已超过461天没有更新,请注意相关的内容是否还可用!
摘要:在Unity游戏开发中,数据持久化路径Application.persistentDataPath指的是应用程序可以写入持久化数据的目录路径。该路径用于存储游戏过程中需要保留的数据,如玩家进度、设置和存档等。通过使用Application.persistentDataPath,开发者可以确保游戏数据在用户设备上安全存储,以便用户在下次启动游戏时能够继续使用之前的进度和设置。这种机制对于提升用户体验和保持游戏进度至关重要。
今天突然想到路径Application.persistentDataPath,这是热更的重要路径,该文件夹可读可写,是移动端唯一一个可读写操作的文件夹。
移动端可以将本地的资源(如资源MD5值配置表)放到StreamingAssets文件夹下,通过复制到persistentDataPath下与服务器版本文件配置表进行比较,完成资源的热更。
为什么不在StreamingAssets文件夹下直接操作?因为这个文件夹只读,不可写,资源无法更新进去。
而关于persistentDataPath文件夹,原本以为它是每次打开游戏时临时保存数据的地方,关闭游戏就会消除,但经过测试后发现,该文件夹是在安装完apk后形成,里面的数据持久存在。
对于Unity3D在各平台的路径问题也进行了详细的研究,以iOS为例,Application.dataPath是app程序包安装路径,app本身就在这里,而app的独立数据存储目录下有三个文件夹:Documents、Library和tmp,Documents目录用于存储需要长期保存的数据,如热更新内容;Library目录有两个子目录,分别是Caches和Preferences;tmp目录是临时目录,存放应用运行时临时使用的数据。
对于Android平台,路径包括apk程序包路径、内存存储(InternalStorage)和外部存储(ExternalStorage)目录等,其中内部存储目录是用户或其他应用都无法访问的,而外部存储目录则分为私有和公有目录,对于Windows平台,路径则包括dataPath、streamingAssetsPath、temporaryCachePath和persistentDataPath等。
关于开头提到的bug,即Application.temporaryCachePath/persistentDataPath返回空字符串的问题,其实是因为权限问题,如果app没有声明访问外部存储空间的权限,但Application.temporaryCachePath和Application.persistentDataPath想返回外部存储的路径,就会出现这个问题,理解了各平台的存储原理后,就能更好地处理这类问题,对于不同平台下的路径访问方法也进行了详细的说明,最后提到了PlayerPrefs路径在各大平台下的位置。
还没有评论,来说两句吧...