如何在 Scratch 上创建一个 Save/Load 函数?

How to create a Save/Load function on Scratch?

我正在尝试在 Scratch 上制作一款游戏,该游戏将使用一种功能来生成特殊代码,当将该代码输入到特定区域时,它将加载生成代码时的统计数据。我 运行 遇到了一个问题,但是,我不知道如何解决,也找不到如何解决的明确答案。

我希望解决方案是:

  • 能够根据需要保存信息(从 1 秒到再次输入之前的任何时间。)
  • 不需要太多的块来制作,这样项目就不会永远加载它。

    当然,我愿意采取任何解决方案来提高我的游戏水平 运行ning,这些只是偏好。
  • 您可以将所有程序放在一个自定义块中,并启用“运行 不刷新屏幕”,以便程序立即运行。

    如果您使用变量保存统计数据,您可以将这些变量值组合成一个字符串,除以 /s。即 join([highscore]) (join("/") (join([kills]) (/))

    注意:不要在您的统计信息中添加任何“/”,您可能会猜到原因。

    现在和我一起“忍受”(双关语),这需要一段时间才能阅读

    然后你需要变量: [read] 用于读取输入的代码 [input] 用于存储数字 然后你可以创建另一个函数来读取代码,如下所示:letter ([read]) of (code) 并将该信息存储到 [input] 变量,如下所示:将 [input] 设置为 (letter ([read]) of (code))。然后 change [read] by (1) 这样函数就可以读取代码的下一个字符。一旦 letter ([read]) of (code) 等于“/”,这将告诉程序 set [*stat variable*] to (input)(在我们的示例中,这将是 [highscore],因为它是我们保存的第一个变量)和 set [input] to (0) , 并再次重复,直到所有统计变量都被填充(在这种情况下,它重复 2 次,因为我们保存了两个变量:[highscore] 和 [kills])。

    这是它需要的最少代码量。混淆它需要更多的代码。稍后我会用屏幕截图来编辑这个答案,展示我之前所说的内容,希望能澄清上面的乱七八糟的文字。

    您提到的技术在许多刮刮游戏中都有使用,但是在制作 save/load 系统时有两个选项供您选择。你可以用更简单的方法来做,这会使代码变得超长(不是开玩笑)。另一种方式是大多数抓取器使用的,将数据编码为尽可能短的字符串,以便于传输。

    如果你想做第二种方式,你可以看看 griffpatch 在马里奥平台重制版上的视频,他在其中使用编码系统来保存 levels.https://www.youtube。com/watch?v=IRtlrBnX-dY 技巧是将您的数据(可能是 score/items name/progress)编码为数字和字母,例如将重复的字母转换为较短的字符串,游戏仍然可以解码读取无误

    如果您担心加载时间太长,我敢肯定这不会有问题,除非您真的保存了大量数据。大家常用的compress方法,效果还不错。如果您想存储更多数据,您可能需要考虑其他方法。没有实际的方法可以做到这一点,因为不同的数据有不同的独特方法来达到最佳效果。祝你好运。