Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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# 玩家prefs保存值慢吗?_C#_Android_Performance_Unity3d - Fatal编程技术网

C# 玩家prefs保存值慢吗?

C# 玩家prefs保存值慢吗?,c#,android,performance,unity3d,C#,Android,Performance,Unity3d,我找到了一些关于这一点的答案,但它们随着年龄的增长而变化(上一个是2015年),所以我想知道这一点,因为我需要它来了解如何构建我的代码。我有经验的升级系统,假设玩家可以在一秒内获得1到10-15倍的xp(假设他使用AOE法术并杀死15个怪物),所以我想知道什么是更好的方法: 每次玩家获得XP时,它都会直接使用PlayerPrefs.SetFloat()保存XP,因此它可能会在一瞬间激活SetFloat15次 在游戏开始时加载玩家xp的内部代码,而不是在代码中进行所有计算,在游戏结束时,我将其保

我找到了一些关于这一点的答案,但它们随着年龄的增长而变化(上一个是2015年),所以我想知道这一点,因为我需要它来了解如何构建我的代码。我有经验的升级系统,假设玩家可以在一秒内获得1到10-15倍的xp(假设他使用AOE法术并杀死15个怪物),所以我想知道什么是更好的方法:

  • 每次玩家获得XP时,它都会直接使用
    PlayerPrefs.SetFloat()
    保存XP,因此它可能会在一瞬间激活
    SetFloat
    15次
  • 在游戏开始时加载玩家xp的内部代码,而不是在代码中进行所有计算,在游戏结束时,我将其保存到PlayerPrefs

我想使用第一种方法,因为对我来说它更安全,但我不知道这是否会很慢。

使用PlayerPrefs通常更适合保存特定于玩家的选项,如音量或屏幕大小,或小型游戏应用程序。一旦你的游戏变得越来越复杂,你可以考虑创建XML、TXT或者某种其他文件来保存你的游戏数据。 你可以看看Unity论坛上的讨论


此外,每秒自动节省15次通常是个坏主意,因为这是毫无意义的。如果你真的实现了自动保存,你应该考虑增加保存或保存场景更改的延迟或其他不太频繁调用的事件。

<代码> PravePrfs<代码>是缓慢的,你应该使用它们来保存从场景到场景或从应用程序开始直到关闭的一些数据。您可以使用它来存储一些配置、设置等。但我建议不要使用它来存储敏感用户数据(如高分、体验、分数等)。您不会每秒保存15次数据。你只在你即将加载新场景、游戏结束、新场景即将重新启动、退出应用程序时保存数据。我所做的每一次保存都是为了播放参考(经验、等级、名称、库存、统计数据…)。我害怕的是,如果我将它保存到TXT文件,它将很容易访问,每个人都可以更改它。有什么更安全的方法吗?@AleksaRistic有多种方法可以加密保存的数据,或者您可以编写自己的加密算法。网上也有关于这个的讨论。好的。还有一个问题。我可以将文件保存到我的ftp吗?基本上,您不必加密任何数据来将其存储在文件中。您只需想出一些序列化方法并(重新)存储序列化数据。将所有内容强制放到ftp上是可能的,但对于单人游戏来说,这也不是一个好主意。@AleksaRistic我不明白为什么不,看一看。