Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

项目组织

前言

由于Godot对项目结构或文件系统的使用没有限制, 因此学习引擎时组织文件似乎很有挑战性. 本教程提出了一个工作流程, 应该是一个很好的起点. 我们还将介绍在Godot中使用版本控制.

组织

Godot本质上是基于场景的, 并按原样使用文件系统, 而没有元数据或资产数据库.

与其他引擎不同, 场景本身包含许多资源, 因此文件系统中的文件数量要少得多.

考虑到这一点, 最常见的方法是将资产编组得尽可能接近场景;当项目变大时, 它使其更易于维护.

例如, 通常可以将其基本资产(例如, 精灵图像, 3D模型网格, 材质, 和音乐等)放置在一个文件夹中. 然后, 它们可以使用一个单独的文件夹来存储使用它们的构建关卡.

/project.godot
/docs/.gdignore  # See "Ignoring specific folders" below
/docs/learning.html
/models/town/house/house.dae
/models/town/house/window.png
/models/town/house/door.png
/characters/player/cubio.dae
/characters/player/cubio.png
/characters/enemies/goblin/goblin.dae
/characters/enemies/goblin/goblin.png
/characters/npcs/suzanne/suzanne.dae
/characters/npcs/suzanne/suzanne.png
/levels/riverdale/riverdale.scn

风格指南

为了项目之间的一致性,我们建议遵循以下规范:

  • 使用 snake_case 风格为文件夹和文件命名(除了c#脚本). 这避免了在 Windows 上导出项目时可能出现的大小写敏感问题.C# 脚本是这个规则的一个例外, 因为按照惯例是用类名来对它们命名, 而类名应该是 PascalCase 风格.

  • 使用 PascalCase 风格对节点进行命名, 这与内置的节点大小写风格一致.

  • 通常, 将第三方资源放在顶级的 addons/ 文件夹中, 即使它们不是编辑器插件. 这样更加容易跟踪哪些文件是第三方文件. 当然这个规则也有一些例外: 如果你要使用第三方游戏资源创建角色, 将这些资源和角色场景及脚本放在同一文件夹下会更好.

导入

3.0版之前的 Godot 版本从项目外的文件执行导入过程. 尽管这在大型项目中很有用, 但它给大多数开发人员带来了组织麻烦.

因此,现在可以从项目文件夹中透明地导入资产。

忽略具体文件夹

为防止 Godot 导入特定文件夹中的文件, 请在文件夹中创建一个名为 .gdignore 的空文件(以 . 号开头). 这对于加快初始项目导入非常有用.

备注

要在 Windows 上创建文件名以点开头的文件,请在文件名的前后都写一个点(“.gdignore.”)。确认之后 Windows 会自动移除末尾的点。

你也可以使用文本编辑器来创建它,例如记事本。或在命令提示符中输入以下命令:type nul > .gdignore

一旦文件夹被忽略,其中资源就不能再使用 load()preload() 方法加载。被忽略文件夹会从文件系统栏目中隐藏,从而减少混乱。

请注意 .gdignore 文件的内容会被忽略,因此该文件应当为空。它不像 .gitignore 文件一样支持模式匹配。

大小写敏感

Windows 和最近版本的 macOS 默认使用不区分大小写的文件系统,而 Linux 发行版默认使用区分大小写的文件系统。由于 Godot 的 PCK 虚拟文件系统区分大小写,因此在导出项目后可能会导致问题。为了避免这种情况,建议对项目中的所有文件都使用 snake_case 蛇形命名法(一般使用小写)。

备注

当风格指南中另有说明时, 可以不遵守此规则(如C#样式指南). 不过, 记得保持一致性, 避免出错.

在 Windows 10 上,为了进一步避免与大小写敏感性相关的错误,你还可以让项目文件夹区分大小写。启用 Windows 的 Linux 子系统特性后,在 PowerShell 窗口中运行以下命令:

# To enable case-sensitivity:
fsutil file setcasesensitiveinfo <path to project folder> enable

# To disable case-sensitivity:
fsutil file setcasesensitiveinfo <path to project folder> disable

如果你还没有启用 Windows 的 Linux 子系统,可以在 PowerShell 窗口中输入以下代码以管理员权限运行然后重启:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux