Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Application.StreamingAssetPath和Application.persistentDataPath之间有什么区别?它们是如何使用的?_C#_Unity3d - Fatal编程技术网

C# Application.StreamingAssetPath和Application.persistentDataPath之间有什么区别?它们是如何使用的?

C# Application.StreamingAssetPath和Application.persistentDataPath之间有什么区别?它们是如何使用的?,c#,unity3d,C#,Unity3d,我对这两者之间的某些概念表示怀疑。对于Application.streamingassetpath,我应该在项目中创建一个StreamingAssets文件夹,这样我就可以将文件保存到其中,然后重新加载它。那么,Application.persistentDataPath和Application.streamingAssetPath的角色是什么呢 如果我有要保存的资产和数据(位置、健康状况等),然后将其重新加载到移动设备(Android和IOS)和PC中。哪一个是最佳选择 下面我使用应用程序保存

我对这两者之间的某些概念表示怀疑。对于
Application.streamingassetpath
,我应该在项目中创建一个StreamingAssets文件夹,这样我就可以将文件保存到其中,然后重新加载它。那么,
Application.persistentDataPath
Application.streamingAssetPath
的角色是什么呢

如果我有要保存的资产和数据(位置、健康状况等),然后将其重新加载到移动设备(Android和IOS)和PC中。哪一个是最佳选择

下面我使用
应用程序保存。StreamingAssetPath

using (FileStream fs = new FileStream(Application.streamingAssetsPath + "/Position.json", FileMode.Create))
    {
        BinaryWriter filewriter = new BinaryWriter(fs);
        filewriter.Write(JsonString);
        fs.Close();


    }

通常,对于在构建期间不可用且在分发后将被修改的数据,请使用
Application.persistentDataPath
,并使用
Application.streamingAssetPath
获取构建之前存在的游戏数据,您希望能够在游戏期间通过IO系统读取这些数据(可能会在游戏更新中进行修改)。例如,播放器保存的数据可能应该放在
应用程序中。persistentDataPath
和对话文件可能放在
应用程序中。StreamingAssetPath

最大的技术区别是,通常
应用程序。persistentDataPath
可以保存在与游戏数据不同的位置,以便卸载或更新游戏不会导致玩家丢失数据。大部分区别在于意图,即
应用程序。persistentDataPath
用于在游戏运行之间保存数据,而
应用程序。streamingAssetPath
旨在允许开发人员拥有可通过路径名访问的游戏文件



如果要存储要跟踪的角色的当前位置、当前运行状况和当前状态,则需要
Application.persistentDataPath
。如果要存储用于初始化的角色的起始位置、最大运行状况和其他统计数据,
Application.streamingassetpath
将是一个更好的选择。

StreamingAssets内置于apk/ipa中,无法修改文件。在Android上,你还必须格外小心,避免它们被压缩,因为这样加载的速度非常慢。PersistentDataPath是存储设备上保存的任何文件的位置。您可以在此处添加/删除/更改文件,在iOS上,如果您不将这些文件标记为不备份,这些文件将保存到iCloud备份中。@RetiredInja For iOS和Android的路径不同。我必须在代码中编写两个路径。例如-if#UNITY(iOS应用程序.persistentDatapath和if#UNITY)Android应用程序.persistentDatapath。不确定您在说什么。是的,persistentDataPath的内容在不同的平台上是不同的,但是Unity处理这个问题,您无需对此采取任何措施。@RetiredInja我的意思是,如果我想让我的游戏同时在android和IOS中运行……并以两个版本保存游戏,我应该做什么?简而言之:如果您需要从应用程序外部访问文件(例如,通过文本编辑器等更改XML文件中的设置),请使用persistentDataPath。您可以在where中读取不同平台的设备上的persistentDataPath。如果您不需要外部访问,您可以直接使用streamingAssets。Unity处理所有平台上的路径,因此Android和iOs的代码保持不变。。这就是使用统一的全部思想;)
如果要存储用于初始化的角色的起始位置、最大运行状况和其他统计数据,则最好选择Application.StreamingAssetPath。
而不是直接在类中执行此操作。。不需要将它们存储在文本文件中。。。只有在以后不想更改它们时,才会将其保存在那里。。然后,您还是希望将它放在
PersientDataPath
中,这可能是真的,但问题似乎暗示,出于任何原因,他们希望它放在单独的文件中。我试图接受隐含的语境,而不是假设自己的语境。例如,他们可能有一个生成字符数据的外部程序,在这种情况下,他们希望它生成文件,而不是代码。