项目组织
简介
由于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 上创建一个以 .
号开头的文件,你可以使用文本编辑器比如 Notepad++ 或者在命令提示符(Win+R 键—>输入cmd打开)中输入:type nul > .gdignore
.
一旦文件夹被忽略,该文件夹中的资源就不能再使用 load()
和 preload()
方法加载.
忽略文件夹也会自动将其从 FileSystem dock 隐藏,这有助于减少杂乱.
大小写敏感
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