项目组织

前言

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

组织

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

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

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

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

  1. /project.godot
  2. /docs/.gdignore # See "Ignoring specific folders" below
  3. /docs/learning.html
  4. /models/town/house/house.dae
  5. /models/town/house/window.png
  6. /models/town/house/door.png
  7. /characters/player/cubio.dae
  8. /characters/player/cubio.png
  9. /characters/enemies/goblin/goblin.dae
  10. /characters/enemies/goblin/goblin.png
  11. /characters/npcs/suzanne/suzanne.dae
  12. /characters/npcs/suzanne/suzanne.png
  13. /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 窗口中运行以下命令:

  1. # To enable case-sensitivity:
  2. fsutil file setcasesensitiveinfo <path to project folder> enable
  3. # To disable case-sensitivity:
  4. fsutil file setcasesensitiveinfo <path to project folder> disable

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

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