中EN
概念页

文件与数据 IO、存档思路

Godot File IO & Persistence

更新于 2026-10-16 约 2 分钟Godot存档FileAccessResourceSaverJSONuser://

官方存档模式:用组标记持久对象 → 序列化(常 JSON 字典或自定义)→ 写入 user://。实践上 GDQuest 更推荐简单结构用 FileAccess.store_var,复杂结构用自定义 Resource + ResourceSaver。

原理(官方)

  1. 识别要持久化的对象(常用 Persist 组)。
  2. 每对象提供 save() 返回可序列化数据;遍历组写入文件。
  3. 路径:res:// 打包只读;用户数据用 user://(OS.get_user_data_dir())。
  4. 配置可用 ConfigFile;大资源后台加载见 background_loading。

实践补充(GDQuest)

方法适合注意
FileAccess.store_var / get_var简单字典/原生类型,安全默认无代码二进制,不可读
自定义 Resource + ResourceSaver复杂嵌套、要编辑器检视;.tres/.res加载不可信 Resource 可执行脚本
ConfigFile设置 INI底层 var2str
JSONWeb/互通无 Vector 等原生类型,数字皆 float
var2str/str2var底层文本序列化不可信来源危险

加载 Resource 存档时常用 ResourceLoader.CACHE_MODE_IGNORE 避免脏缓存。UGC 用 Safe Resource Loader 类插件。

取舍

  • 官方 JSON 组遍历教学清晰,适合入门;上线项目多收敛到 store_var 或 Resource。
  • 切勿往 res:// 写运行时存档。
  • UE 对照:SaveGame 对象 ≈ 自定义 Resource 存档;user:// ≈ Saved 目录约定。

参见

  1. Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
  2. Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
  3. Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
  4. Godot 官方文档(离线 HTML,stable) Godot 4.7/stable
  5. Save and Load: Godot 4 Cheat Sheet(GDQuest) GDQuest Save cheat sheet
  6. Saving and Loading Games in Godot 4 with Resources(GDQuest) GDQuest Resource 存档
  7. docs.godotengine.org/en/stable/tutorials/io/saving_games.html
  8. 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、资源注册表、生命周期(引用计数)和资源的内存管理;交叉引用与加载后初始化见 资源交叉引用与加载后初始化,离线工具链见 资产管线与工具链。

被这些页面引用1 篇

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原