
文档教程游戏开发【免费下载链接】godot-docsGodot Engine official documentation项目地址https://gitcode.com/GitHub_Trending/go/godot-docs点击查看免费下载导读EditorPaths是 Godot 引擎中一个仅编辑器可用的单例用于获取各操作系统标准化的数据、配置与缓存目录路径是编辑器插件安全落盘的关键基础设施。本文以classes/class_editorpaths.rst为核心结合tutorials/io/data_paths.rst与classes/class_projectsettings.rst、classes/class_os.rst等关联文档完整讲解其全部 6 个方法、各平台默认路径、XDG 规范兼容、自包含self-contained模式并给出可在插件中直接使用的 GDScript 示例。EditorPaths 是什么EditorPaths是一个editor-only仅编辑器单例继承自Object见 class_object.rst 的继承列表。它封装了编辑器在用户系统上存放数据、配置和缓存文件的标准位置返回的都是绝对路径OS 原生路径非res:///user://虚拟路径。它的设计初衷是在编辑器插件中确保文件被保存到每个操作系统上的正确位置。例如插件需要写缓存、读配置、定位已安装的导出模板时不应硬编码路径而应通过EditorPaths动态获取。从文档结构看该文档由 Godot 引擎源码自动生成XML 来源为引擎doc/classes/EditorPaths.xmlEditorPaths对外暴露的 API 非常精简只有 6 个方法全部为const无副作用不修改任何成员变量返回类型方法说明Stringget_cache_dir()用户缓存目录可安全删除的临时数据Stringget_config_dir()用户配置目录持久化配置Stringget_data_dir()用户数据目录持久化数据如导出模板Stringget_project_settings_dir()项目专属编辑器设置目录Stringget_self_contained_file()使编辑器进入自包含模式的文件路径boolis_self_contained()当前编辑器是否处于自包含模式在导出项目中不可用关键限制EditorPaths在导出的项目中不可访问。尝试在导出项目里访问该单例会直接产生脚本错误——因为该单例不会被声明。文档明确要求要在导出项目中避免脚本错误使用Engine.has_singleton()先检查该单例是否可用再决定是否调用。# 安全访问 EditorPaths先检查单例是否存在 if Engine.has_singleton(EditorPaths): var editor_paths Engine.get_singleton(EditorPaths) print(editor_paths.get_config_dir()) else: # 运行在导出项目中EditorPaths 不存在 print(EditorPaths is not available in exported projects)这一检查模式是所有编辑器专用单例EditorPaths、EditorInterface等在运行时脚本中的标准防护姿势。从 EditorInterface 获取 EditorPaths虽然可以直接通过Engine.get_singleton(EditorPaths)访问但 Godot 也提供了更规范的入口EditorInterface.get_editor_paths()直接返回EditorPaths单例见 class_editorinterface.rst 的方法表与get_editor_paths方法描述。# 在编辑器插件脚本中获取 EditorPaths var editor_paths EditorInterface.get_editor_paths()在_enter_tree()/_exit_tree()生命周期之外如_plugin脚本的工具模式运行时两种方式等价可任选其一。六大方法逐一详解get_cache_dir()缓存目录返回用户缓存文件夹的绝对路径用于存放可以安全删除的临时数据例如编辑器生成的资源缩略图、着色器缓存等。这类数据在编辑器关闭后随时可以清除。各平台默认路径- Windows: %LOCALAPPDATA%\Godot\ - macOS: ~/Library/Caches/Godot/ - Linux: ~/.cache/godot/在 Linux/BSD 上该路径可通过在启动前设置XDG_CACHE_HOME环境变量来覆盖详见 data_paths.rst 的 Editor data paths 一节。注意与OS.get_cache_dir()的区别后者返回的是全局缓存目录而EditorPaths.get_cache_dir()返回的是Godot 编辑器专属缓存目录两者在默认配置下通常就是同一位置但语义上一个属于应用级、一个属于引擎级详见 class_os.rst 中get_cache_dir的说明。get_config_dir()配置目录返回用户配置文件夹的绝对路径用于存放持久的用户配置文件。典型用途包括编辑器主设置文件、编辑器布局、功能配置文件feature profiles、脚本模板等自定义项。各平台默认路径- Windows: %APPDATA%\Godot\ 与 get_data_dir() 相同 - macOS: ~/Library/Application Support/Godot/ 与 get_data_dir() 相同 - Linux: ~/.config/godot/值得注意的是在 Windows 和 macOS 上get_config_dir()与get_data_dir()返回同一个目录而 Linux 上二者分离~/.config与~/.local/share。这正是 XDG 规范下配置与数据分离的体现。仓库中有多处实际引用证实了该目录的用途在 class_editorfeatureprofile.rst 中通过用户界面创建的功能配置文件.profile扩展名即保存在feature_profiles目录下文档明确指示用EditorPaths.get_config_dir()定位编辑器配置目录class_editorinterface.rst 中激活功能配置文件set_feature_profile时也要求配置文件位于该目录否则会报错。get_data_dir()数据目录返回用户数据文件夹的绝对路径用于存放持久化的用户数据文件最典型的就是已安装的导出模板export templates。各平台默认路径- Windows: %APPDATA%\Godot\ 与 get_config_dir() 相同 - macOS: ~/Library/Application Support/Godot/ 与 get_config_dir() 相同 - Linux: ~/.local/share/godot/get_project_settings_dir()项目级编辑器设置目录与前三个全局目录不同这个方法返回的是相对路径指向当前项目专属的编辑器设置位置通常是res://.godot/editor。每个项目都会在设置路径下拥有一个唯一子目录用于保存项目专属的编辑器设置不同项目互不干扰。这与res://虚拟路径相关具体而言项目内的.godot/目录存放项目级数据元数据、着色器缓存等其隐藏与否由项目设置application/config/use_hidden_project_data_directory控制默认true使用隐藏的.godot设为false则改用非隐藏的godot目录详见 class_projectsettings.rst。注意修改该设置后需要重启应用且可能影响依赖默认.godot文件夹的第三方工具或插件。该方法返回的res://.godot/editor即项目设置的实际落盘位置。# 在插件中定位项目专属编辑器设置 var settings_dir editor_paths.get_project_settings_dir() # 返回例如 res://.godot/editor由于返回的是相对res://的路径可直接配合FileAccess、DirAccess等以res://为前缀的 API 使用无需再经过ProjectSettings.globalize_path()转换。get_self_contained_file() 与 is_self_contained()自包含模式这两个方法共同支撑 Godot 的自包含self-contained模式用于创建便携式编辑器安装。get_self_contained_file()返回使当前编辑器实例被视为自包含的那个文件的绝对路径若当前编辑器实例并非自包含则返回空字符串。is_self_contained()返回true表示编辑器已被标记为自包含false反之。启用方式在编辑器未运行时于编辑器二进制文件所在目录macOS 则是 .app 包所在目录创建一个名为._sc_或_sc_的文件即可。行为差异启用后用户的配置、数据与缓存文件全部保存到编辑器二进制旁边的editor_data/目录中使编辑器尽量减少自身文件夹之外的文件写入便携使用例如放到 U 盘、CI 环境更加容易。各平台启用位置对照- Windows/Linux: 与编辑器二进制godot.exe / godot同目录 - macOS: .app 包同级目录而非 .app 内部macOS 专属注意事项使用自包含模式前应手动移除 quarantine隔离标记Gatekeeper 下载文件的属性否则可能无法正常运行。不要把_sc_或任何其他文件放进 .app 包内部——这会破坏数字签名使 .app 变得不可移植。应放在 .app 包同级目录。其他平台注意Steam 版 Godot 默认启用自包含模式。自包含模式对导出项目不可用若需在导出项目中相对可执行文件读写文件应使用OS.get_executable_path()注意仅当可执行文件位于可写位置时有效如放在 Program Files 等只读目录则不行详见 data_paths.rst 的 Self-contained mode 一节。# 检查并打印自包含状态 var editor_paths EditorInterface.get_editor_paths() if editor_paths.is_self_contained(): print(Self-contained file: , editor_paths.get_self_contained_file()) # 数据将写入 编辑器二进制目录/editor_data/ else: print(Not self-contained)Linux/BSD 上的 XDG 规范兼容在 Linux/BSD 平台Godot完全遵循 XDG Base Directory SpecificationFreeBSD 规范见 data_paths.rst 引用。这意味着可以通过设置环境变量来重定向编辑器和项目数据路径目录默认值覆盖环境变量数据目录data~/.local/share/godot/XDG_DATA_HOME配置目录config~/.config/godot/XDG_CONFIG_HOME缓存目录cache~/.cache/godot/XDG_CACHE_HOME# 示例将 Godot 的编辑器数据、配置与缓存全部重定向到自定义目录 export XDG_DATA_HOME/mnt/portable/godot-data export XDG_CONFIG_HOME/mnt/portable/godot-config export XDG_CACHE_HOME/mnt/portable/godot-cache godot --editor这与OS.get_cache_dir()/get_config_dir()/get_data_dir()的文档描述相互印证——它们同样声明在 Linux/BSD 上可通过上述环境变量覆盖见 class_os.rst 对应方法。区别在于EditorPaths系列返回的是Godot 编辑器专用目录即 Godot 子目录下的路径而OS系列返回全局用户目录本身二者不应混淆。另外如果使用Flatpak 打包的 Godot编辑器数据路径会位于~/.var/app/org.godotengine.Godot/的子目录中。插件实战把文件写到正确的位置综合以上 API一个典型的编辑器插件落盘场景如下# tools/editor_plugin.gd —— 编辑器插件脚本示例 tool extends EditorPlugin func _enter_tree() - void: var paths : EditorInterface.get_editor_paths() # 1. 持久化配置 → 配置目录 var config_path : paths.get_config_dir().path_join(my_plugin.cfg) _write_if_needed(config_path) # 2. 临时数据 → 缓存目录可安全删除 var thumb_path : paths.get_cache_dir().path_join(my_plugin/thumb_cache.bin) _write_if_needed(thumb_path) # 3. 大体积持久数据类似导出模板的定位→ 数据目录 var data_path : paths.get_data_dir().path_join(my_plugin/assets) _write_if_needed(data_path) # 4. 项目专属编辑器设置 → res://.godot/editor var proj_settings : paths.get_project_settings_dir() print(Project editor settings live at: , proj_settings) func _write_if_needed(path: String) - void: var f : FileAccess.open(path, FileAccess.WRITE) if f: f.store_string(plugin data) f.close()要点回顾缓存 vs 配置 vs 数据临时可删数据放缓存目录小而持久的用户配置放配置目录大体积/可再下载的持久数据如导出模板、下载的资产放数据目录。项目级 vs 用户级与具体项目绑定、需要随项目走的编辑器设置放get_project_settings_dir()返回的res://.godot/editor与项目无关、属于用户偏好的放配置目录。导出项目防护任何可能在导出项目中被执行的代码路径都要先用Engine.has_singleton(EditorPaths)检查或仅在EditorPlugin生命周期内调用。与 user:// 的衔接EditorPaths管理的是编辑器自身的目录而玩家存档等项目运行时数据走的是user://前缀其真实位置同样由这些编辑器数据路径派生。根据 data_paths.rst 的说明默认情况下user://文件夹创建在Godot 编辑器数据目录即EditorPaths.get_data_dir()对应的位置下的app_userdata/[project_name]文件夹中使原型和测试项目保持自包含。若在项目设置中启用application/config/use_custom_user_dir默认falseuser://将被创建在紧挨着编辑器数据目录的位置即应用数据标准位置文件夹名默认从项目名推断也可通过application/config/custom_user_dir_name进一步定制该值甚至可以包含路径分隔符如Studio Name/Game Name便于按工作室分组详见 class_projectsettings.rst。桌面平台user://实际路径对照类型WindowsmacOSLinux默认%APPDATA%\Godot\app_userdata\[project_name]~/Library/Application Support/Godot/app_userdata/[project_name]~/.local/share/godot/app_userdata/[project_name]自定义目录%APPDATA%\[project_name]~/Library/Application Support/[project_name]~/.local/share/[project_name]自定义目录名称%APPDATA%\[custom_user_dir_name]~/Library/Application Support/[custom_user_dir_name]~/.local/share/[custom_user_dir_name]理解这一层关系有助于排查编辑器里能找到的东西导出后怎么不见了这类路径问题——编辑器侧的EditorPaths与运行时侧的user://共享同一套操作系统目录约定只是入口不同。总结EditorPaths是 Godot 编辑器插件开发中一个虽小但不可绕过的单例它把跨平台差异封装为 6 个极简方法让插件无需关心 Windows/macOS/Linux 各自的数据组织习惯。核心要点可以归纳为三类持久目录的语义分工缓存可删、配置小、持久、数据大、持久在 Windows/macOS 上配置与数据同目录Linux 上遵循 XDG 分离。项目级设置目录res://.godot/editor与全局目录并行的两级结构。自包含模式通过._sc_/_sc_标记文件启用配合is_self_contained()检测实现真正的便携安装。导出项目不可用是最大坑点务必用Engine.has_singleton()防护。相关阅读File paths in Godot projectsres:///user://与编辑器数据路径全景、class_os.rstOS全局目录方法对比、class_projectsettings.rstuse_custom_user_dir、use_hidden_project_data_directory等项目设置。赞分享文档教程游戏开发【免费下载链接】godot-docsGodot Engine official documentation项目地址https://gitcode.com/GitHub_Trending/go/godot-docs点击查看免费下载相关推荐dirs-rs跨平台目录路径库dirs rs跨平台目录路径库 项目基础介绍 dirs rs 是一个用Rust编程语言编写的开源项目旨在为开发者提供一个简单易用的库用于获取不同操作系统上ProperTree深度解析跨平台plist编辑器专业指南ProperTree深度解析跨平台plist编辑器专业指南 ProperTree是一款功能强大的跨平台plist编辑器采用Python语言开发为用户提供直桌面应用开发工具Calibre电子书格式转换教程5分钟跑通全流程附3个避坑要点Calibre电子书格式转换教程5分钟跑通全流程附3个避坑要点 刚找到的EPUB被手里的Kindle拒收手机阅读App只认PDF——每换一次格式就得重新桌面应用后端上一篇ncmdumpNCM 转 MP3 完整指南3 步把歌放上老播放器下一篇Mac Mouse Fix让普通鼠标拥有平滑滚动与侧键手势的macOS工具30天免费体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考