【自定义条件】检测到Baz存档加载条件

BazSaveLoadDetectedCondition

一款对开发者友好的条件判断,在游戏保存或加载完成后立即变为真。适用于显示“已保存!”弹窗、自动保存闪烁效果,或需要在加载完成的瞬间执行初始化逻辑的场景。只需从下拉菜单中选择“保存”或“加载”,即可设置完毕。

为了支持我的工作,请考虑 成为我的赞助者:folded_hands:

下载:
BazSaveLoadDetectedCondition.gd (9.0 KB)

要求

AGMaker 1.3.0 及以上版本

安装

  1. 下载 BazSaveLoadDetectedCondition.gd(见下方附件)。
  2. 将其放入项目的 custom_conditions/ 文件夹中。如果该文件夹尚不存在,请在项目根目录下创建它。使用子文件夹如 custom_conditions/save_load/ 也是可以的。
  3. 完成。它将会出现在 添加条件 对话框中的 Save Data / セーブデータ 组下。无需启用任何额外设置。

功能说明

提供一个转换条件,在保存或加载操作完成后立即触发。否则,引擎内置功能中并无此类检查。

  • 检测类型 (Detect Type)。选择要监控的事件。Save(保存) 在保存操作完成后立即变为真,Load(加载) 在加载操作完成后立即变为真。
  • 触发窗口 (Trigger Window)。条件变为真后保持多长时间(秒)。默认的 0.05 秒是一个短暂的脉冲。对于加载操作,窗口从对象在加载后首次进行检查的那一刻开始计时,因此即使对象稍后才生成,也能被捕获到。
  • 触发延迟 (Trigger Delay,仅限加载)。加载触发前可选的等待时间。保持为 0 时,它会在场景加载完成的瞬间触发,这对于仅涉及逻辑的操作(如设置开关或刷新 HUD)非常完美。但是,在淡入淡出期间,加载操作会使动画和移动保持冻结状态。因此,如果您要控制的状态包含可见动画,请将此值设置为约等于您的加载过渡时长(通常为 0.3 秒到 0.5 秒),这样动画就会流畅播放,而不会在淡入淡出中途闪烁。保存操作没有过渡等待期,因此此字段仅在“检测类型”设置为“加载”时显示。
  • 适用于任何对象。保存和加载事件是全局的,因此无论谁触发了保存,任何对象的转换都可以对此做出反应。
  • 独立且可共享。单个文件,无需自动加载(autoload),无需修改项目设置,无需管理其他额外内容。它会在运行时自行生成和清理所需的一切。

使用方法

将条件添加到任何对象的转换中,然后将 检测类型 指向“保存”或“加载”。除非有事件遗漏,否则保持 触发窗口 为默认值,如有需要可适当调高。在加载操作中,如果受控状态包含动画,请将 触发延迟 设置为您的过渡时长,以便在场景完全显示后触发。

示例,显示“已保存!”弹窗:SaveGameData 操作 → 一个将此条件设置为 Save 的转换 → 一个显示“已保存!”文本然后转换回原状态的逻辑。

示例,加载后立即进行初始化:将此条件设置为 Load 并用于控制一个初始化状态,在其中执行一次性工作,如重新定位相机、刷新 HUD 或播放音效。

示例,加载时播放流畅动画:将此条件设置为 Load 并用于控制一个包含动画的状态,将 触发延迟 设置为淡入淡出时长,这样动画会在场景可见后完整播放,而不是在淡入淡出中途开始。

提示

  • 在加载时使用触发延迟来处理动画。加载操作会使动画和移动在淡入淡出结束前保持冻结,因此立即开始动画的状态可能会出现闪烁。将触发延迟设置为约等于您的过渡时长(通常为 0.3 秒到 0.5 秒),以便在场景完全可见时触发。对于仅涉及逻辑的反应,请保持为 0。
  • 如果事件遗漏,请调高触发窗口。默认的 0.05 秒在保存和加载操作中都能可靠捕获,但如果偶尔有遗漏,使用 0.1 秒到 0.2 秒这样更大的窗口可以增加容错率。
  • 这是一个脉冲,而非标志。请配合后续转换使用,在弹窗或初始化完成后离开该状态,因为条件仅在该短暂窗口内为真。
  • 一个条件涵盖两种事件。无需分别使用保存和加载插件,只需切换检测类型即可。
3 个赞

wowwww
我觉得这是一个非常有用的功能,可以利用它完成好多便携效果,感谢baz!!