命令行教程

一些开发人员喜欢广泛使用命令行。Godot被设计为对他们友好,所以这里是完全用命令行工作的步骤。由于引擎几乎不依赖外部库,因此初始化时间非常快,使其适合此工作流程。

命令行参考

General options

命令 描述
-h, --help, /? 显示命令行选项列表。
--version 显示版本信息。
-v, --verbose 使用哆嗦输出模式。
--quiet 安静模式,静默输出的信息。但错误仍然会显示。

运行选项

命令 描述
-e--editor 启动编辑器而不是运行场景 (工具 必须处于开启状态)。
-p--project-manager 启动项目管理器,即使一个项目已经被自动检测到 (工具 必须处于开启状态)。
-q--quit 第一次迭代后退出。
-l <locale>--language <locale> 使用一个具体指定的地区代码(<locale> 是一个两个字幕的代码)。阅读 地区设置 以获得更多信息。
--path <directory> 项目的路径(<目录>必须包含一个’project.godot’文件)。
-u--upwards Scan folders upwards for ‘project.godot’ file.
--main-pack <file> 要加载的包文件(.pck)的路径。
--render-thread <模式> 渲染线程模式 (‘unsafe’, ‘safe’, ‘separate’)。阅读:ref:线程模式<class_ProjectSettings_property_rendering/threads/thread_model> 以获得更多细节。
--remote-fs <地址> 远端文件系统 (<主机名/IP>[:<端口号>] 地址).
--audio-driver <驱动> 音频驱动。先使用 --help 来显示可用的驱动列表。
--video-driver <驱动> 视频驱动。先使用 --help 来显示可用的驱动列表。

显示选项

命令 描述
-f--fullscreen 请求使用全屏模式。
-m--maximized 请求一个最大化了的窗口。
-w--windowed Request windowed mode.
-t--always-on-top 请求一个总在最顶的窗口。
--resolution <W>x<H> 请求窗口分辨率。
--position <X>,<Y> 指定屏幕位置。
--low-dpi 强制低解析度模式(仅在macOS 和 Windows 中可用)。
--no-window 关闭窗口创建(仅Windows)。和 ``–script``一起使用非常有用。

调试选项

注解

调试模式仅仅在编辑器和调试输出模板中起作用(这要求使用 debugrelease_debug 构建目标,阅读 目标 以获得更多信息)。

命令 描述
-d--debug 调试(本地标准输出调试器)。
-b--breakpoints Breakpoint list as source::line comma-separated pairs, no spaces (use %%20 instead).
--profiling 在脚本调试器中启用分析。
--remote-debug <地址> 远程调试 (<主机名/IP>:<端口号> 地址).
--debug-collisions 运行场景时显示碰撞框的形状。
--debug-navigation Show navigation polygons when running the scene.
--frame-delay <毫秒ms> 模拟高CPU负载(每帧延迟<ms>毫秒)。
--time-scale <缩放> 强制时间缩放(值越大,速度越快,1.0是正常速度)。
--disable-render-loop 禁用渲染循环,以便仅在从脚本显式调用时才进行渲染。
--disable-crash-handler 当平台代码支持时,禁用崩溃处理程序。
--fixed-fps <帧率> 每秒强制固定数量的帧。 此设置禁用实时同步。
--print-fps 打印每秒的帧数到标准输出上。

单独的工具

命令 描述
-s <script>--script <script> 运行脚本。
--check-only 仅解析错误并退出(与–script一起使用)。
--export <平台> 使用给定的导出平台导出项目。 仅当路径以.pck或.zip结尾时才导出主包(必须启用 tools )。
--export-debug <平台> --export 一样,但是使用调试模板(必须启用 工具 )。
--doctool <路径> 将引擎API参考以XML格式转储到给定的<路径>中,如果发现现有文件则合并(必须启用 工具 )。
--no-docbase 禁止转储基本类型(和 --doctool 一起使用,工具 必须启用)。
--build-solutions 构建脚本解决方案(例如用于构建C#项目,必须启用 tools)。
--gdnative-generate-json-api 为GDNative绑定生成Godot API的JSON输出(必须启用 tools)。
--test <test> 运行单元测试。可以先用 --help 显示测试列表。(必须启用 tools)。

路径

建议将Godot二进制文件放在 PATH 环境变量中,这样可以通过在任何地方键入 godot 来轻松地执行它。您可以在Linux上通过将Godot二进制文件放在 /usr/local/bin 中,并确保其名为 godot

设置项目路径

根据Godot二进制文件的位置以及当前的工作目录,您可能需要设置项目的路径,以下任何命令才能正常工作。

这可以通过将项目的 project.godot 文件的路径作为第一个参数给出来完成,如下所示:

[email protected]:~$ godot path_to_your_project/project.godot [other] [commands] [and] [args]

或者通过使用 --path 参数:

[email protected]:~$ godot --path path_to_your_project [other] [commands] [and] [args]

例如,用于导出游戏的完整命令(如下所述)可能如下所示:

[email protected]:~$ godot --path path_to_your_project --export my_export_preset_name game.exe

创建一个项目

通过将命令行导航到所需位置并创建 project.godot 文件,可以从命令行创建项目。

[email protected]:~$ mkdir newgame
[email protected]:~$ cd newgame
[email protected]:~/newgame$ touch project.godot

现在可以使用Godot打开该项目。

运行编辑器

运行编辑器是通过用 -e 标志执行Godot来完成的。必须在项目目录或子目录内完成此操作,否则该命令将被忽略并显示项目管理器。

[email protected]:~/newgame$ godot -e

如果已经创建并保存了场景,则可以稍后以该场景作为参数运行相同的代码来对其进行编辑。

[email protected]:~/newgame$ godot -e scene.tscn

删除一个场景

Godot对您的文件系统非常友好,不会创建额外的元数据文件。只需使用 rm 来删除文件。确保没有对该场景的引用,否则在打开时会抛出错误。

[email protected]:~/newgame$ rm scene.tscn

运行游戏

要运行游戏,只需在项目目录或子目录中执行 Godot 即可。

[email protected]:~/newgame$ godot

当需要测试特定场景时,将该场景传递给命令行。

[email protected]:~/newgame$ godot scene.tscn

调试

捕捉命令行中的错误可能是一项艰巨的任务,因为它们一闪而过。为此,通过添加 -d 来提供命令行调试器。它适用于运行游戏或简单的场景。

[email protected]:~/newgame$ godot -d
[email protected]:~/newgame$ godot -d scene.tscn

导出

从命令行导出项目也被支持。这对于连续集成设置特别有用。headless的Godot版本(服务器版本,无视频)是理想的选择。

[email protected]:~/newgame$ godot --export "Linux/X11" /var/builds/project
[email protected]:~/newgame$ godot --export Android /var/builds/project.apk

--export 开关识别的平台名称与编辑器的导出向导中显示的平台名称相同。要从命令行获取支持的平台列表,请尝试导出到无法识别的平台,然后将显示您的配置支持的平台的完整列表。

要导出游戏的调试版本,请使用 --export-debug 开关,而不是 --export。它们的参数和用法是相同的。

运行脚本

可以从命令行运行简单的 .gd 脚本。此功能在大型项目中特别有用,可用于素材的批量转换或自定义导入/导出。

该脚本必须继承自 场景树(SceneTree)主循环(MainLoop)

下面是一个简单的示例,说明它是如何工作的:

#sayhello.gd
extends SceneTree

func _init():
    print("Hello!")
    quit()

以及如何运行它:

[email protected]:~/newgame$ godot -s sayhello.gd
Hello!

如果路径中不存在 project.godot,则假定当前路径为当前工作目录(除非指定了 -path)。