Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
游戏嵌入
Godot 支持(可选地)在编辑器内部直接运行游戏。此功能默认处于启用状态。
备注
游戏始终在独立的进程中运行,无论使用何种嵌入模式。这意味着,如果游戏崩溃,编辑器不会随之崩溃。
配置游戏嵌入
游戏嵌入可以处于以下三种状态之一:
浮动窗口 (默认): 游戏将在一个独立的窗口中运行,窗口顶部会显示一个“游戏栏”(Game bar),允许你调整设置并在嵌入式游戏中选择节点。点击主屏幕上的 按钮可使浮动窗口获得焦点。
主窗口: 游戏将在编辑器内部运行,顶部会显示一个“游戏栏”(Game bar),允许你调整设置并在嵌入式游戏中选择节点。点击主屏幕上的 将切换到包含正在运行项目的选项卡。
禁用: 游戏将在一个独立的窗口中运行,就像运行导出的项目一样。顶部不会显示“游戏栏”(Game bar),也无法在嵌入式游戏中选择节点。
要配置此功能,请单击编辑器顶部的 Game(游戏) 主屏幕按钮:
访问游戏嵌入主屏幕
进入‘游戏(Game)’主界面后,点击游戏栏右上角的下拉菜单:
游戏嵌入模式下拉菜单
有两种选项可用于配置游戏嵌入模式:
下次运行游戏时嵌入: 如果启用,将开启游戏嵌入模式,并且可以在运行的游戏上使用游戏栏(Game bar)。
下次运行游戏时使窗口浮动: 如果启用,游戏将在一个浮动窗口中运行。如果禁用,游戏将在编辑器的主窗口中运行。
嵌入式窗口尺寸
正如游戏栏右侧下拉菜单中所示,有多种选项可用于配置嵌入式窗口的尺寸行为。这既影响浮动窗口模式,也影响主窗口嵌入模式:
固定尺寸 (默认):将视口大小设置为项目设置中配置的固定分辨率。如果同时设置了 display/window/size/window_width_override 和 display/window/size/window_height_override 且数值均大于
0,则会优先使用此覆盖设置。保持宽高比: 视口尺寸会拉伸以匹配游戏窗口的大小,但始终遵循项目设置中配置的
宽度 / 高度所定义的宽高比。拉伸以适应: 视口尺寸会拉伸以匹配游戏窗口的大小,并且可能会使用与项目设置中配置的
宽度 / 高度所定义的宽高比不同的比例。这与禁用游戏嵌入时的行为一致。
如果游戏嵌入功能处于禁用状态,这些选项将不会生效。
功能
启用游戏嵌入后,在项目运行时,可以使用顶部的“游戏栏”(Game bar)来调整多项功能。
嵌入式游戏窗口顶部的游戏栏
从左到右依次是:
暂停 (F9)
暂停/恢复游戏。当游戏暂停时,将停止处理物理运算和空闲帧,但仍会继续渲染画面并处理输入。这允许你在游戏运行时 选择场景中的节点 并在编辑器检查器中检查其属性。
逐帧前进 (F10)
仅在游戏暂停时可用。该功能将游戏向前推进一帧,允许你检查游戏在特定时刻的状态。这可用于诊断那些在游戏全速运行时难以观察的短暂交互(例如碰撞)。
游戏速度
游戏速度:该选项是一个可以调整游戏速度的菜单。如果游戏在运行时设置了 Engine.time_scale,其值将会与此处设定的值相乘。
游戏栏左侧的游戏速度下拉菜单
这既可以用来慢动作查看交互细节,也能大幅加快游戏速度,方便测试那些通常需要很久才会触发的机制。
下拉菜单右侧的重置按钮,可以将游戏速度恢复到正常(1.0倍)。
小技巧
当使用此机制调整游戏速度时,物理更新频率(由项目设置中的 physics/common/physics_ticks_per_second 决定)会自动乘以当前的游戏速度。这样一来,游戏逻辑的运行速度可以发生变化,而不会影响物理模拟的准确性。例如:
如果你将游戏速度设为 0.5,那么物理引擎的刷新频率也会减半。
如果你将游戏速度设为 4.0,那么物理引擎的刷新频率也会变成原来的四倍。
每帧的最大物理步数(由 maximum number of physics steps per frame 决定)也会相应增加,以匹配新的物理刷新率;不过,当游戏处于慢动作状态时,这个数值不会降低到默认值以下。
交互模式
这决定了当嵌入式游戏窗口处于焦点状态时,点击鼠标或按下按键会触发什么行为。
输入 (默认):照常允许游戏接收输入。
2D: 禁用游戏输入,允许选择 Node2D、Control,并操控 2D 摄像机。
3D: 禁用游戏输入,允许选择 Node3D,并操控 3D 摄像机。
在 2D 和 3D 模式下选中的节点,都可以像平时在编辑器里选中它们一样,在编辑器的‘检查器’(Inspector)面板中查看。这意味着你可以直接查看并修改正在运行中的游戏里的节点属性。
警告
就像在‘远程场景树’(Remote scene tree)中一样,以这种方式对正在运行的游戏所做的更改,在游戏停止时不会被保留。
如果想要在游戏停止后依然保留所做的更改,你需要在编辑器的‘本地场景树’(Local scene tree)中选中对应的节点,并在游戏运行时从那里进行修改。进行此操作时,请确保 处于开启状态。
选取模式
仅在交互模式为 2D 或 3D 时有效,在 Input(输入)模式下无效。
启用此选项后,‘在点击位置显示可选节点列表’的模式将被禁用。不过,你依然可以在选择模式下,通过在目标位置按下 Ctrl + Alt + Right mouse button 来执行此操作。
在点击位置显示可选节点列表
仅在交互模式为 2D 或 3D 时有效,在 Input(输入)模式下无效。
就像在编辑器里一样,这会在你点击的位置显示一个可选节点的列表。当多个节点互相重叠,而你又想选中其中某一个特定的节点时,这个功能非常实用。不过要注意,启用这个选项后,常规的选择模式将会被禁用。
切换选中项的可见性
仅在交互模式为 2D 或 3D 时有效,在 Input(输入)模式下无效。
默认情况下,在 2D 或 3D 交互模式中,被选中的节点会像在游戏编辑器里一样,被一个橙色的矩形或方框高亮显示出来。
启用此选项后,它会显示为一个闭合的眼睛图标。此后,你在游戏视图中选中的物体将不再显示高亮框,但它们依然会被选中,并且可以在右侧的‘检查器’(Inspector)面板中查看属性。这个功能非常实用,可以避免画面看起来过于杂乱。
高级选择选项
在‘选择模式’图标旁边的下拉菜单中,提供了两个高级选项:
不选中已锁定的节点: 启用后,在编辑器中被锁定的节点将无法被选中。这完美复刻了编辑器原本的操作逻辑。
优先选中组而非子节点: 启用后,点击时会直接选中整个节点组,而不是组内的单个子节点。这完美复刻了编辑器原本的操作逻辑。
静音游戏音频
启用此选项后,会直接静音游戏发出的音频,但不会影响编辑器本身或其他应用程序的声音。这个功能在 macOS 和 Android 平台上特别实用,因为这两个系统默认并没有提供针对单个应用程序的独立音量调节滑块。
相机覆盖
启用后,预览相机会停止跟随游戏内的相机。之后,你只需切换到 2D 或 3D 交互模式,并使用常规的导航操作,就能自由地移动预览视角了。
在 2D 交互模式下,按住鼠标中键(或者 Space + Left mouse button)可以平移视角,滚动鼠标滚轮则可以进行缩放。
在 3D 交互模式下,按住鼠标右键,同时按下 W, A, S, and D 键即可自由观察(freelook)。使用鼠标中键可以围绕目标旋转视角,按住 Shift + Middle mouse button 键可以平移视角,滚动鼠标滚轮则可以进行缩放。此外,你还可以使用 Ctrl + Minus 、 Ctrl + Plus 以及 Ctrl + 0 来调整视野范围(FOV,这是相对于游戏自带相机的视野范围而言的)。
这个功能非常适合用来检查那些从游戏自带相机视角根本看不到的场景区域,或者用来直接观察游戏相机本身的位置和状态。当你关闭‘相机覆盖’(即退出自由观察模式)时,视角会立刻自动弹回并锁定到游戏相机的视角上。
当关闭‘相机覆盖’(即退出自由观察模式)时,被覆盖的游戏相机原本的位置和旋转角度并不会被重置。这样一来,你就可以在游戏相机和自由观察视角之间快速地来回切换了。
备注
如果‘相机覆盖’(自由观察模式)看起来无法交互,请确保你已经切换到了 2D 或 3D 交互模式。虽然在‘输入交互模式’(Input interaction mode)下,相机覆盖功能依然保持开启,但在这个模式下你无法移动被覆盖的相机(除非使用下面提到的 从编辑器操纵 这种相机覆盖模式)。
当覆盖 2D/3D 相机时,项目中的脚本并不会感知到这个相机覆盖操作。因此,在检查那些依赖于相机位置的属性时,请务必记住:它们计算的依然是原始游戏相机的位置,而不是你当前自由观察的位置。
相机覆盖 选项
重置 2D/3D 相机: 将 2D/3D 相机重置回游戏原本定义的位置和旋转角度。不过请注意,重置后相机依然会保持在原位锁定不动,直到你彻底关闭‘相机覆盖’(自由观察模式)为止。
在游戏中操纵 (默认选项):开启这个模式后,自由观察(相机覆盖)的操作将直接在游戏窗口中进行。这样一来,你就不需要来回切换回编辑器界面,也能轻松控制相机视角啦。
从编辑器操纵: 开启这个选项后,自由观察(相机覆盖)的操作将完全在编辑器窗口中进行。这个功能在多显示器设置下特别实用,因为你可以把编辑器和正在运行的游戏项目并排显示,一边看游戏画面,一边在编辑器里操控镜头。而且,当你使用这个选项时,自由观察的相机位置还能在多次运行项目之间被“记住”!因为每次开启时,它都会直接复用编辑器里相机原本的位置,完全不需要你每次都重新找角度啦。
备注
在使用 从编辑器操纵 这种相机覆盖模式时,相机覆盖的画面看起来可能会不够流畅。这是因为编辑器和游戏之间需要通过本地网络通信来同步更新相机的位置(从而产生了一定的延迟)。
限制
请注意,游戏嵌入功能存在一些已知的局限性(限制):
在安卓(Android)编辑器中,游戏嵌入功能始终会使用浮动窗口来显示。默认情况下,系统会利用安卓自带的“画中画”(PiP)功能,让这个浮动窗口一直保持在编辑器的最上层。如果你觉得这个设置有点碍事,可以在游戏栏(Game bar)右侧的菜单中,取消勾选 ,就能轻松关掉这个自动置顶的行为啦。
在使用游戏嵌入功能时,不支持更改窗口模式(比如切换到全屏模式)。
当使用 功能来同时运行多个实例时,只有第一个实例会使用游戏嵌入(显示在编辑器内)。其余的实例则会弹出在各自独立的窗口中,并且这些窗口顶部不会带有游戏栏(Game bar)。