概念页
文件与数据 IO、存档思路
Godot File IO & Persistence
官方存档模式:用组标记持久对象 → 序列化(常 JSON 字典或自定义)→ 写入 user://。实践上 GDQuest 更推荐简单结构用 FileAccess.store_var,复杂结构用自定义 Resource + ResourceSaver。
原理(官方)
- 识别要持久化的对象(常用
Persist组)。 - 每对象提供
save()返回可序列化数据;遍历组写入文件。 - 路径:
res://打包只读;用户数据用user://(OS.get_user_data_dir())。 - 配置可用
ConfigFile;大资源后台加载见 background_loading。
实践补充(GDQuest)
| 方法 | 适合 | 注意 |
|---|---|---|
FileAccess.store_var / get_var | 简单字典/原生类型,安全默认无代码 | 二进制,不可读 |
自定义 Resource + ResourceSaver | 复杂嵌套、要编辑器检视;.tres/.res | 加载不可信 Resource 可执行脚本 |
ConfigFile | 设置 INI | 底层 var2str |
JSON | Web/互通 | 无 Vector 等原生类型,数字皆 float |
var2str/str2var | 底层文本序列化 | 不可信来源危险 |
加载 Resource 存档时常用 ResourceLoader.CACHE_MODE_IGNORE 避免脏缓存。UGC 用 Safe Resource Loader 类插件。
取舍
- 官方 JSON 组遍历教学清晰,适合入门;上线项目多收敛到 store_var 或 Resource。
- 切勿往
res://写运行时存档。 - UE 对照:SaveGame 对象 ≈ 自定义 Resource 存档;
user://≈ Saved 目录约定。
参见
出处
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
- Save and Load: Godot 4 Cheat Sheet(GDQuest) GDQuest Save cheat sheet
- Saving and Loading Games in Godot 4 with Resources(GDQuest) GDQuest Resource 存档
- docs.godotengine.org/en/stable/tutorials/io/saving_games.html
- docs.godotengine.org/en/stable/tutorials/io/index.html
相关页面
游戏开发 · Godot资源与场景实例化Resources & InstancingResource 是纯数据容器(纹理、网格、脚本、动画、音频等);节点消费 Resource。场景实例化是把 PackedScene 当作蓝图复制出运行时节点树——勿与 GPU MultiMesh 硬件实例化混淆。游戏开发引擎文件系统与异步文件读写Engine File System & Asynchronous File IO资源管理器大量依赖文件系统。引擎通常把操作系统的文件 API 包装成自己的 API:一是跨平台、屏蔽硬件差异;二是操作系统缺少引擎需要的功能(如流式加载),主机还要统一访问记忆棒、硬盘、蓝光盘、网络文件系统等介质。引擎文件系统 API 通常涵盖:文件名与路径操作、打开/关闭/读写文件、扫描目录、处理异步 I/O 请求(流式加载)。游戏开发 · UE5存档系统SaveGameUE 的存档围绕自定义的 USaveGame 子类进行:保存时把需要持久化的数据从游戏世界拷进 SaveGame 对象,再用 UGameplayStatics 写入某个存档槽(槽名 + 用户索引);读档时反过来。官方推荐用 AsyncSaveGameToSlot 异步保存,避免掉帧,也避免某些平台的认证问题。游戏开发资源管理器Resource Manager游戏由网格、材质、纹理、着色器、动画、音频、关卡布局、碰撞与物理参数等大量资源(也叫资产、媒体)构成。内存有限,所以引擎要保证每个资源在内存中只有一份(五个网格共用一张纹理时只载入一份)。每个引擎都有某种资源管理器:有的是统一集中的子系统,有的散布在多年间由不同人写的各个子系统中,但职责和要解决的问题是一样的。本页讲运行时部分:职责、文件组织与归档、文件格式、资源 GUID、资源注册表、生命周期(引用计数)和资源的内存管理;交叉引用与加载后初始化见 资源交叉引用与加载后初始化,离线工具链见 资产管线与工具链。