Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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# 在Unity中保存游戏状态背后的逻辑:应用程序中的每个类都必须具有加载/保存功能?_C#_Unity3d - Fatal编程技术网

C# 在Unity中保存游戏状态背后的逻辑:应用程序中的每个类都必须具有加载/保存功能?

C# 在Unity中保存游戏状态背后的逻辑:应用程序中的每个类都必须具有加载/保存功能?,c#,unity3d,C#,Unity3d,我从拯救各州开始;我很快就从playerprefs中成长出来了,现在我已经拥有了每个会话的一致数量的类和数据 我没有掌握的是统一保存工作原理的基本概念:是否有某种机制可以对可执行文件和类/对象/变量进行快照,并允许您像操作系统备份一样进行恢复,或者是基于以某种自定义文件格式编写每个参数和对象,若要稍后恢复,请重新创建所有对象并传递这些保存的参数,以便可以覆盖默认值 我在问,因为我不确定在第二种情况下(保存所有参数),是否必须将类设计为“允许”保存 在我的例子中,我只有几个经理、一个玩家、几个AI

我从拯救各州开始;我很快就从playerprefs中成长出来了,现在我已经拥有了每个会话的一致数量的类和数据


我没有掌握的是统一保存工作原理的基本概念:是否有某种机制可以对可执行文件和类/对象/变量进行快照,并允许您像操作系统备份一样进行恢复,或者是基于以某种自定义文件格式编写每个参数和对象,若要稍后恢复,请重新创建所有对象并传递这些保存的参数,以便可以覆盖默认值

我在问,因为我不确定在第二种情况下(保存所有参数),是否必须将类设计为“允许”保存

在我的例子中,我只有几个经理、一个玩家、几个AI实体和一吨NPC,除此之外,还有一个基于其他AI团队的买卖活动的经济模拟,与variouos玩家的市场有关。 在这个场景中,对于每个实体,我可能会很容易地漏掉需要实际保存的参数数量


你能给我指一下正确的方向吗?这样我就可以理解我是否需要深入学习我的课程,并对每一个课程进行修改,以包含对其中每一个参数的某种“检索和替换”;或者不是。

可能您正在查找数据并将其保存在文件中,然后在恢复会话时从文件中加载数据。请看一个例子。请注意,在这个示例中,用户确实保存了可能包含各种类的游戏类,因此不必为每个类(如
角色
)担心

还有几个例子:


希望有帮助

谢谢你的回复;我确实检查了序列化,因为它在Unity教程中,但他们所做的是创建一个包含数据的类,复制该类中的所有数据,将该类标记为可序列化,然后使用标准IO创建一个文件并对其进行写/读。如果是这种情况,我需要几天的时间来收集需要保存的数据的所有位置,并将其复制到这个“容器”类中;因此,在用这种方式刺伤自己之前,我确实开始寻找替代方案:)检查你提到的其他选项,交叉手指。“如果是这样,我需要几天时间收集所有需要保存的数据位置”完全错误。在一个严肃的Unity项目中实现“保存游戏状态”的概念需要一到两个人月的工作。请注意,如果你想将它发送到PlayGameServices或类似的网站,那将需要一个月以上的工作。我的想法是,如果现在有十几吨的东西需要保存,那么在开始时,它应该是一个明确的要求,所以事情就是这样设计的(而不是涵盖每一件事,并仔细考虑)或者它现在应该被认为是一个巨大的变化。也许我也迷路了。好吧,我同意你的看法;虽然我是从PlayerPrefs开始的,但项目开始时看起来并没有那么糟糕,所以第一个想法是“我们以后再处理”。现在,我有足够的知识来更好地理解“保存/加载”问题,我可以在我们到达不返回点之前处理它。在我的梦中,统一会有某种机制来缓解这种痛苦,就像它对其他事物一样;这就是为什么这个话题被推迟了,因为它认为在项目中实现这种魔力不会花费太长时间。我错了,很高兴现在发现了:)哈哈,为那些“超级坏消息”的家伙们感到抱歉!呵呵。是的,这是一个巨大的项目。这相当于在游戏中实现“暂停”(如玩家暂停时)。这是一个非常耗时的过程,基本上使整个游戏的工作量翻了一番。总之,我欢呼道:“我没有掌握的是拯救如何在统一中运作的基本概念。”在统一中,绝对没有这样的概念。很简单,unity很简单地“无论如何都还没有解决这个问题”。因此,不管是好是坏,你只需要完全自己去做,以你想要的任何方式。这既令人沮丧,同时也是积极的。知道没有神奇的解决方案,知道我必须实现一切,这会有很大帮助。现在,你已经找到了。请注意,Unity有一个完整的“序列化”系统。但基本上全是废话。人们花了几个月的时间来摆弄它。