【发布时间】:2018-12-31 08:21:39
【问题描述】:
我对这两者之间的某些概念有疑问。对于Application.streamingAssetsPath,我应该在我的项目中创建一个 StreamingAssets 文件夹,这样我就可以将文件保存到其中并稍后重新加载它。那么Application.persistentDataPath和Application.streamingAssetsPath的作用是什么?
如果我要保存资产和数据(位置、健康状况等),然后在移动设备(Android 和 IOS)和 PC 中重新加载它们。哪个是最好的选择?
下面我使用Application.streamingAssetsPath保存
using (FileStream fs = new FileStream(Application.streamingAssetsPath + "/Position.json", FileMode.Create))
{
BinaryWriter filewriter = new BinaryWriter(fs);
filewriter.Write(JsonString);
fs.Close();
}
【问题讨论】:
-
StreamingAssets 内置在 apk/ipa 中,不能修改文件。您还必须在 Android 上格外小心,以免它们被压缩,因为以这种方式加载它们非常慢。 PersistentDataPath 是您保存在设备上的任何文件的存储位置。您可以在此处添加/删除/更改文件,在 iOS 上,如果您不将它们标记为不备份,这些文件将保存到 iCloud 备份中。
-
@RetiredNinja 对于 IOS 和 Android,路径是不同的。我必须在我的代码中编写两条路径。例如 -if #UNITY_IOS Application.persistentDatapath 和 if #UNITY_ANDROID Application.persistentDatapath。
-
不确定你在说什么。是的,persistentDataPath 的内容在不同的平台上是不同的,但 Unity 会处理,你不需要做任何事情。
-
@RetiredNinja 我的意思是,如果我想让我的游戏同时在 android 和 IOS 上运行......并在两个版本中保存游戏。我应该怎么做
-
简而言之:如果您需要从应用程序外部访问文件(例如,通过 Texteditor 等更改 XML 文件中的设置),请使用 persistentDataPath。您可以阅读docs 在哪里可以找到设备上针对不同平台的persistentDataPath。如果您不需要该外部访问权限,则可以选择 streamingAssets。 Unity 处理所有平台上的路径,因此 Android 和 iO 的代码保持相同..这就是使用 Unity 的全部想法;)