保存、加载和高分记录 | hyperPad Documentation
Logo
Documentation教程保存、加载和高分记录

通常,你会想制作一款能够记住上次游玩时某些信息的游戏。

你想保存什么,很大程度上取决于你正在制作的游戏或 app。无论你想保存分数、位置还是整体进度,都需要提前规划好要保存什么,以及何时保存。

在本教程中,我们将介绍如何保存玩家分数,并创建一个简单的最高分或“上次最佳”分数系统。

在本教程中,我们假设你已经制作了一个简单的游戏:玩家可以拾取金币(创建平台游戏的第 5 部分),并且屏幕上的标签会显示金币数量。

保存

保存时,你需要问自己两个重要问题:要保存什么?何时保存?在 hyperPad 中,“保存行为”一次只能保存一个值,因此你确实需要仔细考虑要保存的内容。

在本教程中,我们将保存屏幕上标签所显示的分数(收集到的金币数量)。

现在我们知道要保存标签上的分数,接下来就要确定何时保存。

这里有很多选择,具体取决于游戏玩法或整体设计。你可以在玩家每次拾取金币时保存,也可以在玩家失败时、通关时、按下按钮时保存,或者根据你的情况选择其他时机。

在本教程中,我们将设置一个按钮,让玩家按下保存按钮时保存分数。如果你想在玩家失败或完成关卡时保存,也可以使用相同的行为逻辑。只需在获胜或失败时触发这些行为即可。

选择“保存按钮”对象,然后打开行为编辑器。

从行为编辑器的“交互”类别中,添加一个“停止触摸”行为。

接着,从“UI”类别中添加一个“获取标签”行为,并将它连接到上一步的“停止触摸”行为。

轻点“获取标签”行为,查看其属性。在行为属性中,轻点代表当前对象的区域,然后选择场景中显示分数的标签。

接下来,从“自定义”类别中添加一个“保存到文件”行为,并将它连接到“停止触摸”行为。

选择刚刚添加的“保存到文件”行为,查看其属性。注意,“键类型”设置为“现有”。现有键是指预先定义的、用于保存内容的键。

首先,你需要为要保存的内容添加标题或说明,这称为“键”。轻点“选择或创建键”按钮,打开键列表。

在顶部输入一个描述性标题,然后按 + 按钮添加第一个键。由于我们要保存分数,请将键命名为“Score”。

接下来,你需要实际保存标签中的分数。为此,请将“获取标签”行为角落处的输出值拖到“保存到文件”属性的输入框中。

完成了!此时,只要按下保存按钮,游戏就会保存分数。不过,你还没有对保存的值做任何处理。接下来,你需要加载分数,并在场景中使用它。

加载

保存分数后,你需要加载它并在场景中使用。加载时,有一个重要问题需要回答:你想在什么时候加载?

和保存一样,答案很大程度上取决于你的项目。你可以在场景开始时立即加载,也可以在玩家按下按钮时加载,或者在其他事件触发时加载。这完全取决于你想实现什么效果。

在本教程中,我们会在场景开始时立即加载,并显示之前保存的分数。

首先,在场景中添加一个标签。我们将用这个标签显示已保存的分数。

接下来,我们需要添加实际的加载逻辑。在本教程中,我们会将逻辑添加到前面步骤中使用的保存按钮上。不过,具体要放在哪里取决于你的游戏。选择保存按钮,然后在对象属性中打开行为编辑器。

从“自定义”类别中添加“从文件加载”行为,不要将它连接到任何行为。由于它没有连接到其他行为,因此只要按钮出现在场景中,加载行为就会在场景开始时执行。如果你想根据特定事件或其他触发条件来加载,则需要将它连接到其他行为。

现在选择“从文件加载”行为,查看其属性。再次确认“键类型”选择的是“现有”。

接着,轻点“选择键”按钮,打开已保存的键列表。从列表中选择你之前添加的“Score”键。

此时,你已经成功加载了分数。但你还没有对它做任何处理。现在我们来使用这个已加载的值。

从“UI”类别中添加一个“设置标签”行为,并将它连接到之前添加的“从文件加载”行为。

接着,选择“设置标签”行为以查看其属性,并记得选择刚刚添加的、用于显示已加载分数的新标签。选择正确的标签后,将“从文件加载”行为角落处的输出值拖到“设置标签”行为的输入框中。

就这样!下次游玩时,你的进度就会被保存,并加载到标签中。

最高分

你可能已经注意到,每次按下按钮时都会保存分数,并覆盖之前的分数。有时这样没问题,但通常你只想在玩家的分数超过之前的分数时才保存。

要实现这个“最高分”系统,我们只需要稍微修改保存逻辑。

首先,回到放置保存行为的位置(保存按钮)。

首先,你需要断开“保存到文件”行为与“停止触摸”行为之间的连接。轻点连接两个行为的线,将它们断开。

接着,从“逻辑”类别中添加一个 IF 行为。IF 行为会在执行后续行为之前,检查是否满足特定条件。在这里,我们只希望分数大于之前加载的分数时才保存。

将 IF 行为连接到“停止触摸”行为。

接下来,轻点 IF 行为,打开行为属性并设置条件。

将“获取标签”的输出值拖到 IF 行为的第一个输入框中。

然后将“从文件加载”行为的输出值拖到 IF 行为的第二个输入框中。

现在需要更改条件。轻点“等于”按钮,然后选择“大于或等于”(≥)选项。

最后,将原来的保存行为连接到 IF 行为。这样,只有当标签中的值大于(或等于)加载的值时,IF 行为才会执行与之连接的保存行为。

就这些。现在你应该已经有一个可用的保存和加载系统,只有当玩家的分数超过之前的成绩时,才会保存分数。

保存其他内容

本教程介绍了如何保存分数。但有时你可能想保存其他内容,比如玩家的位置、当前关卡等。

本教程中学到的概念同样适用。你只需要更改保存时机,以及要保存的内容。

以保存玩家位置为例。对象的位置由两个数字表示:X 和 Y。对此,你只需使用两个“保存”行为,一个保存 X 坐标,另一个保存 Y 坐标。加载时,则使用两个“加载”行为。之后,你不需要设置标签,只需将玩家对象移动到加载的 X 和 Y 坐标即可。

只要规划好要保存什么以及何时保存,就能创建一个几乎适用于任何情况的系统。