You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Scratch中实现自定义存档加载?保存角色、文本位置与进度

Scratch DDLC复刻存档加载功能实现方案

核心思路

把需要恢复的状态数据(角色位置、文本位置、当前文本)拼接成可复制的加载码,加载时拆分码并还原对应状态。


一、存档功能实现(按S键触发)

1. 准备全局变量

创建以下全局变量:

  • 加载码:存储生成的存档字符串
  • 当前文本:实时记录当前正在显示的对话文本(对话切换/中断时同步更新)
  • 临时列表:临时存储拆分/拼接的状态数据

2. 编写存档自定义块

定义生成存档码块(勾选「运行时不刷新屏幕」):

定义生成存档码
  清空[临时列表 v]
  // 保存主角角色位置
  添加(x position of [主角角色 v])到[临时列表 v]
  添加(y position of [主角角色 v])到[临时列表 v]
  // 保存文本框位置
  添加(x position of [文本框角色 v])到[临时列表 v]
  添加(y position of [文本框角色 v])到[临时列表 v]
  // 保存当前中断的文本
  添加([当前文本 v])到[临时列表 v]
  // 拼接成加载码(用^做分隔符,避免和文本内容冲突)
  将[加载码 v]设为(用"^"连接[临时列表 v])
  // 显示加载码让用户复制
  说(加载码)3秒

3. 绑定S键触发

在舞台或主角角色的代码中添加:

当按下[S v]键
  调用[生成存档码 v]

二、加载功能实现(输入码恢复)

1. 编写加载自定义块

定义加载存档块:

定义加载存档
  询问[请输入加载码]并等待
  将[临时列表 v]设为(分割(回答)用"^")
  // 校验加载码格式是否正确
  如果(长度 of [临时列表 v])=(5)那么
    // 还原主角位置
    将[x position of [主角角色 v]]设为(第1项 of [临时列表 v])
    将[y position of [主角角色 v]]设为(第2项 of [临时列表 v])
    // 还原文本框位置
    将[x position of [文本框角色 v]]设为(第3项 of [临时列表 v])
    将[y position of [文本框角色 v]]设为(第4项 of [临时列表 v])
    // 还原当前文本并继续显示
    将[当前文本 v]设为(第5项 of [临时列表 v])
    调用[显示当前文本 v] // 调用你原有的文本显示逻辑,从当前文本继续
  否则
    说[无效加载码,请检查输入]2秒

2. 触发加载

可以绑定按键(比如L键)或做加载按钮角色:

当按下[L v]键
  调用[加载存档 v]

三、解决自定义块测试失败的常见问题

  • 变量作用域错误:所有存储状态的变量必须是全局变量,不要用角色私有变量,否则跨角色调用自定义块时无法读取数据
  • 分隔符冲突:如果文本内容包含常用符号,换成^这类不常用的符号做分隔符,避免拆分时出错
  • 数据顺序不一致:存档时添加数据的顺序必须和加载时取出的顺序完全对应,比如先存角色X,加载时就先取第1项设为角色X
  • 文本同步问题:确保当前文本变量在对话切换、中断时实时更新,比如每次显示新文本前都把变量设为对应内容

内容的提问来源于stack exchange,提问作者user22792537

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:31:22