识别统一的gameObjects(运行前)以保存/加载其数据

时间:2018-07-09 17:14:09

标签: unity3d

我几乎已经制作了一个用于Android的小任务游戏,只是我想到我必须保存玩家的进度。

我有很多交互式游戏对象(它们共享我制作的脚本InteractiveObject),该对象具有整数“ CurrentPosition”参数,该参数跟踪玩家与之互动的方式。我需要为所有这些游戏对象保存该参数。

我想我将要做的是在每次交互后将这些数据传递给某个“经理”单身人士类,并将其编译到列表中。..只有我一无所知。 GetInstanceID是唯一的,但不是持久性的,因此它对于此目的无用。

当然,我可以在脚本中添加“ ID”参数,然后在编辑器中手动填写。.但这似乎不是最理想的解决方案。这些对象很多。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您需要以某种方式“注册”您的按钮

除了用“使用代码手动替换”外,这与“手动给他们所有ID”基本相同。

您遇到的第一个问题是,所有按钮都是手动放置在场景中的,并且它们的所有交互都是手动完成的,而所有这些都是手动完成的,与“我需要能够稍后识别这些”。这就是您到这里为止的方式。

选项1:

让代码创建,放置和命名按钮。由于您的代码是您的您的,它会自动生成所需的ID并从保存文件中检索状态,因为您是从一开始就构建它来处理此要求的。

由于您尚未以这种方式设置项目,因此重构项目以这种方式将花费大量工作。

选项2:

按照您不想执行的操作手动进行。您可能必须确定此 是最省力的解决方案,同时也是可靠的。

选项3:

创建一个类,它所具有的全部功能是registerButton函数,该函数将按钮推入数组,以便它们具有索引值ID。当您的按钮运行其Start()方法(如果它们还没有Monobehavior脚本时,为此目的给它们一个),将调用此registerButton方法,该方法返回一个ID(实际上是按钮中的索引) all_the_buttons数组)。使用它作为您的序列化ID。

请注意,尽管这是确定性的(每次按钮将以相同的顺序注册自己),但是它以未知的顺序发生。如果删除,请克隆,创建或在场景层次结构中移动按钮,您将影响按钮具有的ID,可能会使所有现有的保存文件无效。

答案 1 :(得分:0)

您可以使用playerprefs保存游戏数据,请查看此链接https://docs.unity3d.com/ScriptReference/PlayerPrefs.html