DisplayServer
继承: Object
用于低阶窗口管理的服务器接口。
描述
所有与窗口管理相关的内容都由 DisplayServer(显示服务器)处理。因为一个操作系统可能支持多个显示服务器,所以与 OS 是分开的。
无头模式:如果使用 --headless
命令行参数启动引擎,就会禁用所有渲染和窗口管理功能。此时 DisplayServer 的大多数函数都会返回虚拟值。
方法
枚举
enum Feature:
Feature FEATURE_GLOBAL_MENU = 0
显示服务器支持全局菜单。能够让应用程序在操作系统的顶部栏显示其菜单项。macOS
Feature FEATURE_SUBWINDOWS = 1
显示服务器支持多窗口,可以移动到主窗口之外。Windows、macOS、Linux(X11)
Feature FEATURE_TOUCHSCREEN = 2
显示服务器支持触屏输入。Windows、Linux(X11)、Android、iOS、Web
Feature FEATURE_MOUSE = 3
显示服务器支持鼠标输入。Windows、macOS、Linux(X11)、Android、Web
Feature FEATURE_MOUSE_WARP = 4
显示服务器支持扭曲鼠标坐标以将鼠标光标限制在一个区域内,但在到达其中一个边缘时循环。Windows, macOS, Linux (X11)
Feature FEATURE_CLIPBOARD = 5
显示服务器支持剪贴板数据的设置和获取。另见 FEATURE_CLIPBOARD_PRIMARY。Windows、macOS、Linux(X11)、Android、iOS、Web
Feature FEATURE_VIRTUAL_KEYBOARD = 6
显示服务器支持在请求输入文本但没有物理键盘时弹出虚拟键盘。Android、iOS、Web
Feature FEATURE_CURSOR_SHAPE = 7
显示服务器支持将鼠标光标形状设置为与默认不同。Windows、macOS、Linux(X11)、Android、Web
Feature FEATURE_CUSTOM_CURSOR_SHAPE = 8
显示服务器支持将鼠标光标形状设置为自定义图像。Windows、macOS、Linux(X11)、Web
Feature FEATURE_NATIVE_DIALOG = 9
显示服务器支持使用操作系统的本地界面外观来生成对话框。macOS
Feature FEATURE_IME = 10
显示服务器支持 输入法,它通常用于输入中文、日文和韩文文本。这由操作系统处理,而不是由 Godot 处理。Windows, macOS, Linux (X11)
Feature FEATURE_WINDOW_TRANSPARENCY = 11
显示服务器支持窗口可以使用逐像素透明,以使它们后面的窗口部分或完全可见。Windows, macOS, Linux (X11)
Feature FEATURE_HIDPI = 12
显示服务器支持查询操作系统的显示缩放系数。这允许可靠地执行自动 hiDPI 显示器检测,而不是根据屏幕分辨率和报告的显示器 DPI 进行猜测(由于显示器 EDID 损坏,这可能不可靠)。Windows, macOS
Feature FEATURE_ICON = 13
显示服务器支持改变窗口图标(通常显示在左上角)。Windows、macOS、Linux(X11)
Feature FEATURE_NATIVE_ICON = 14
显示服务器支持改变窗口图标(通常显示在左上角)。Windows、macOS
Feature FEATURE_ORIENTATION = 15
显示服务器支持改变屏幕朝向。Android、iOS
Feature FEATURE_SWAP_BUFFERS = 16
显示服务器支持将垂直同步状态改为非默认状态(不支持此功能的平台强制启用垂直同步)。Windows、macOS、Linux(X11)
Feature FEATURE_CLIPBOARD_PRIMARY = 18
显示服务器支持使用主剪贴板。主剪贴板和 FEATURE_CLIPBOARD 是不同的剪贴板。Linux(X11)
Feature FEATURE_TEXT_TO_SPEECH = 19
显示服务器支持文字转语音。见 tts_*
方法。Windows、macOS、Linux(X11)、Android、iOS、Web
Feature FEATURE_EXTEND_TO_TITLE = 20
显示服务器支持将窗口内容扩展到标题。见 WINDOW_FLAG_EXTEND_TO_TITLE。macOS
Feature FEATURE_SCREEN_CAPTURE = 21
显示服务器支持读取屏幕像素。见 screen_get_pixel。
enum MouseMode:
MouseMode MOUSE_MODE_VISIBLE = 0
如果鼠标光标处于隐藏状态,则使其可见。
MouseMode MOUSE_MODE_HIDDEN = 1
如果鼠标光标是可见的,则使其隐藏。
MouseMode MOUSE_MODE_CAPTURED = 2
捕获鼠标。鼠标将被隐藏,其位置被锁定在窗口管理器窗口的中心。
注意:如果你想在这种模式下处理鼠标的移动,则需要使用 InputEventMouseMotion.relative。
MouseMode MOUSE_MODE_CONFINED = 3
将鼠标光标限制在游戏窗口内,并使其可见。
MouseMode MOUSE_MODE_CONFINED_HIDDEN = 4
将鼠标光标限制在游戏窗口内,并使其隐藏。
enum ScreenOrientation:
ScreenOrientation SCREEN_LANDSCAPE = 0
默认横屏朝向。
ScreenOrientation SCREEN_PORTRAIT = 1
默认竖屏朝向。
ScreenOrientation SCREEN_REVERSE_LANDSCAPE = 2
倒横屏朝向(上下颠倒)。
ScreenOrientation SCREEN_REVERSE_PORTRAIT = 3
倒竖屏朝向(上下颠倒)。
ScreenOrientation SCREEN_SENSOR_LANDSCAPE = 4
自动横屏朝向(传感器决定默认或倒向)。
ScreenOrientation SCREEN_SENSOR_PORTRAIT = 5
自动竖屏朝向(传感器决定默认或倒向)。
ScreenOrientation SCREEN_SENSOR = 6
自动横屏或竖屏朝向(传感器决定默认或倒向)。
enum VirtualKeyboardType:
VirtualKeyboardType KEYBOARD_TYPE_DEFAULT = 0
默认文本虚拟键盘。
VirtualKeyboardType KEYBOARD_TYPE_MULTILINE = 1
多行虚拟键盘。
VirtualKeyboardType KEYBOARD_TYPE_NUMBER = 2
虚拟数字键盘,可用于 PIN 输入。
VirtualKeyboardType KEYBOARD_TYPE_NUMBER_DECIMAL = 3
虚拟数字键盘,可用于输入小数。
VirtualKeyboardType KEYBOARD_TYPE_PHONE = 4
虚拟手机号码键盘。
VirtualKeyboardType KEYBOARD_TYPE_EMAIL_ADDRESS = 5
带有附加键的虚拟键盘,可帮助输入电子邮件地址。
VirtualKeyboardType KEYBOARD_TYPE_PASSWORD = 6
用于输入密码的虚拟键盘。在大多数平台上,这应该会禁用自动完成和自动首字母大写功能。
注意:Web 平台不支持。与 KEYBOARD_TYPE_DEFAULT 的行为相同。
VirtualKeyboardType KEYBOARD_TYPE_URL = 7
带有附加键的虚拟键盘,可帮助输入 URL。
enum CursorShape:
CursorShape CURSOR_ARROW = 0
箭头光标形状。这是默认形状,没有指向 LineEdit 和 TextEdit 等会覆盖鼠标指针的节点时显示。
CursorShape CURSOR_IBEAM = 1
工字光标形状。默认在悬停于 LineEdit 和 TextEdit 等接受文本输入的控件时显示。
CursorShape CURSOR_POINTING_HAND = 2
指点的手形光标形状。默认在悬停于 LinkButton 或 RichTextLabel 中的 URL 标签时使用。
CursorShape CURSOR_CROSS = 3
十字光标。应当在用户需要精确瞄准某个元素时显示,例如矩形选择工具和颜色拾取器。
CursorShape CURSOR_WAIT = 4
等待光标。大多数光标主题会在箭头旁边显示旋转图标。旨在用于非阻塞操作(此时用户可以做其他事情)。另见 CURSOR_BUSY。
CursorShape CURSOR_BUSY = 5
等待光标。大多数光标主题会把箭头替换为旋转图标。旨在用于阻塞操作(此时用户无法做其他事情)。另见 CURSOR_WAIT。
CursorShape CURSOR_DRAG = 6
拖动的手形光标。在拖放操作过程中显示。另见 CURSOR_CAN_DROP。
CursorShape CURSOR_CAN_DROP = 7
“能放下”光标。在拖放操作过程中,如果将鼠标悬停在可以接受拖放事件的 Control 上,就会显示这个光标。大多数光标主题会显示一只正在拖拽的手,旁边有一个箭头符号。另见 CURSOR_DRAG。
CursorShape CURSOR_FORBIDDEN = 8
禁止光标。在拖放操作过程中,如果将鼠标悬停在不可接受拖放事件的 Control 上,就会显示这个光标。
CursorShape CURSOR_VSIZE = 9
垂直尺寸调整光标。只在用于悬停的 Control 可以用鼠标调整垂直大小时显示。另见 CURSOR_VSPLIT。
CursorShape CURSOR_HSIZE = 10
水平尺寸调整光标。只在用于悬停的 Control 可以用鼠标调整水平大小时显示。另见 CURSOR_HSPLIT。
CursorShape CURSOR_BDIAGSIZE = 11
辅助对角线尺寸调整光标(右上/左下)。只在但悬停的 Control 可以使用鼠标同时在两个轴上调整大小时显示。
CursorShape CURSOR_FDIAGSIZE = 12
主对角线尺寸调整光标(左上/右下)。只在当悬停的 Control 可以使用鼠标同时在两个轴上调整大小时显示。
CursorShape CURSOR_MOVE = 13
移动光标。应在能够使用鼠标移动被悬停 Control 时显示。
CursorShape CURSOR_VSPLIT = 14
垂直分割光标。当光标悬停于 VSplitContainer 等能够使用鼠标调整拆分的垂直大小的 Control 时显示。部分光标主题中,该光标的外观和 CURSOR_VSIZE 一致。
CursorShape CURSOR_HSPLIT = 15
水平分割光标。当光标悬停于 HSplitContainer 等能够使用鼠标调整拆分的水平大小的 Control 时显示。部分光标主题中,该光标的外观和 CURSOR_HSIZE 一致。
CursorShape CURSOR_HELP = 16
帮助光标。在大多数光标主题中显示为问号图标,不显示为鼠标光标。应在用户请求对下一次点击的元素提供帮助信息时使用。
CursorShape CURSOR_MAX = 17
代表 CursorShape 枚举的大小。
enum FileDialogMode:
FileDialogMode FILE_DIALOG_MODE_OPEN_FILE = 0
该原生对话框只允许选择一个文件。
FileDialogMode FILE_DIALOG_MODE_OPEN_FILES = 1
该原生对话框允许选择多个文件。
FileDialogMode FILE_DIALOG_MODE_OPEN_DIR = 2
该原生对话框只允许选择一个目录,不允许选择任何文件。
FileDialogMode FILE_DIALOG_MODE_OPEN_ANY = 3
该原生对话框允许选择一个文件或目录。
FileDialogMode FILE_DIALOG_MODE_SAVE_FILE = 4
当文件存在时,原生对话框会发出警告。
enum WindowMode:
WindowMode WINDOW_MODE_WINDOWED = 0
窗口模式,即 Window 不占据整个屏幕(除非设置为屏幕的大小)。
WindowMode WINDOW_MODE_MINIMIZED = 1
最小化窗口模式,即 Window 在窗口管理器的窗口列表中既不可见也不可用。通常发生在按下最小化按钮时。
WindowMode WINDOW_MODE_MAXIMIZED = 2
最大化窗口模式,即 Window 会占据整个屏幕区域,任务栏除外,并且会显示边框。通常发生在按下最大化按钮时。
WindowMode WINDOW_MODE_FULLSCREEN = 3
具有完整多窗口支持的全屏模式。
全屏窗口覆盖屏幕的整个显示区域,且没有任何装饰。显示的视频模式没有更改。
在 Windows 上:多窗口全屏模式具有 1px 宽的颜色为 ProjectSettings.rendering/environment/defaults/default_clear_color 的边框。
在 macOS 上:使用新桌面来显示正在运行的项目。
注意:无论平台如何,启用全屏都会更改窗口大小以匹配显示器的大小。因此,请确保你的项目在启用全屏模式时支持多种分辨率。
WindowMode WINDOW_MODE_EXCLUSIVE_FULLSCREEN = 4
单窗口全屏模式。这种模式开销较小,但一次只能在给定屏幕上打开一个窗口(打开子窗口或切换应用程序会触发全屏过渡)。
全屏窗口会覆盖屏幕的整个显示区域,没有边框或装饰。显示视频模式没有改变。
在 Windows 上:取决于视频驱动程序,全屏过渡可能会导致屏幕暂时变黑。
在 macOS 上:一个新的桌面用于显示正在运行的项目。当鼠标指针悬停在屏幕边缘时,独占全屏模式会阻止 Dock 和 Menu 出现。
在 Linux(X11)上:独占全屏模式会绕过合成器。
注意:无论平台如何,启用全屏都会更改窗口大小以匹配显示器的大小。因此,确保你的项目在启用全屏模式时支持多个分辨率。
enum WindowFlags:
WindowFlags WINDOW_FLAG_RESIZE_DISABLED = 0
该窗口不能通过拖动其调整大小的手柄来调整大小。但仍然可以使用 window_set_size 调整窗口大小。全屏窗口会忽略该标志。
WindowFlags WINDOW_FLAG_BORDERLESS = 1
该窗口没有原生标题栏和其他装饰。全屏窗口会忽略该标志。
WindowFlags WINDOW_FLAG_ALWAYS_ON_TOP = 2
该窗口悬浮在所有其他窗口之上。全屏窗口会忽略该标志。
WindowFlags WINDOW_FLAG_TRANSPARENT = 3
该窗口的背景可以是透明的。
注意:如果 ProjectSettings.display/window/per_pixel_transparency/allowed 被设置为 false
,则该标志无效。
注意:透明度支持在 Linux(X11)、macOS 和 Windows 上实现,但可用性可能因 GPU 驱动、显示管理器、和合成器功能而异。
WindowFlags WINDOW_FLAG_NO_FOCUS = 4
该窗口无法获得焦点。无聚焦窗口会忽略除鼠标点击外的所有输入。
WindowFlags WINDOW_FLAG_POPUP = 5
窗口是菜单或 OptionButton 下拉菜单的一部分。当窗口可见时,不能更改该标志。活动的弹出窗口会以独占的形式接收所有输入,但不会从其父窗口窃取焦点。当在其外部点击或切换应用程序时,弹出窗口将会自动关闭。 弹出窗口必须已经设置了临时父级(参见 window_set_transient)。
WindowFlags WINDOW_FLAG_EXTEND_TO_TITLE = 6
窗口内容扩展到窗口的全部大小。与无边框窗口不同,框架仍保持不变,可以调整窗口大小,标题栏是透明的,但具有最小化/最大化/关闭按钮。
使用 window_set_window_buttons_offset 调整最小化/最大化/关闭按钮的偏移量。
使用 window_get_safe_title_margins 确定标题栏下方未被装饰覆盖的区域。
注意:该标志仅在 macOS 上实现。
WindowFlags WINDOW_FLAG_MOUSE_PASSTHROUGH = 7
所有鼠标事件都被传递到同一应用程序的底层窗口。
WindowFlags WINDOW_FLAG_MAX = 8
WindowFlags 的最大值。
enum WindowEvent:
WindowEvent WINDOW_EVENT_MOUSE_ENTER = 0
当鼠标指针进入该窗口时发送。
WindowEvent WINDOW_EVENT_MOUSE_EXIT = 1
当鼠标指针退出该窗口时发送。
WindowEvent WINDOW_EVENT_FOCUS_IN = 2
当窗口获得焦点时发送。
WindowEvent WINDOW_EVENT_FOCUS_OUT = 3
当窗口失去焦点时发送。
WindowEvent WINDOW_EVENT_CLOSE_REQUEST = 4
当用户试图关闭该窗口时发送(例如按下关闭按钮)。
WindowEvent WINDOW_EVENT_GO_BACK_REQUEST = 5
当按下设备的“后退”按钮时发送。
注意:该事件仅在 Android 上实现。
WindowEvent WINDOW_EVENT_DPI_CHANGE = 6
当窗口被移动到具有不同 DPI 的显示器上,或者显示器的 DPI 更改时发送。
注意:该标志仅在 macOS 上实现。
WindowEvent WINDOW_EVENT_TITLEBAR_CHANGE = 7
当窗口标题栏的装饰改变时发送(例如 WINDOW_FLAG_EXTEND_TO_TITLE 被设置或窗口进入/退出全屏模式)。
注意:该标志仅在 macOS 上实现。
enum VSyncMode:
VSyncMode VSYNC_DISABLED = 0
没有垂直同步,这意味着引擎将尽可能快地显示帧(可能会有可见的撕裂)。帧速率是未限制的(不考虑 Engine.max_fps)。
VSyncMode VSYNC_ENABLED = 1
默认的垂直同步模式,图像只在垂直消隐间隔显示(没有可见的撕裂)。帧速率受显示器刷新率的限制(不考虑 Engine.max_fps)。
VSyncMode VSYNC_ADAPTIVE = 2
当帧速率降至屏幕刷新率以下以减少卡顿(可能有可见的撕裂)时,行为类似于 VSYNC_DISABLED。否则,启用垂直同步以避免撕裂。帧速率受显示器刷新率的限制(不考虑 Engine.max_fps)。使用兼容渲染方法时表现得像 VSYNC_ENABLED。
VSyncMode VSYNC_MAILBOX = 3
在垂直消隐间隔显示队列中的最新图像,同时对其他图像渲染(没有可见的撕裂)。帧速率是未限制的(不考虑 Engine.max_fps)。
虽然不能保证,但可以尽可能快地渲染图像,这可能会减少输入滞后(也称为“快速”V-Sync 模式)。VSYNC_MAILBOX 在渲染的帧数至少是显示器刷新率的两倍时效果最佳。使用兼容渲染方法时表现得像 VSYNC_ENABLED。
enum HandleType:
HandleType DISPLAY_HANDLE = 0
显示器句柄:
Linux (X11):显示器的
X11::Display*
。Android:显示器的
EGLDisplay
。
HandleType WINDOW_HANDLE = 1
窗口句柄:
Windows:窗口的
HWND
。Linux (X11):窗口的
X11::Window*
。macOS:窗口的
NSWindow*
。iOS:视图控制器的
UIViewController*
。Android:Activity 的
jObject
。
HandleType WINDOW_VIEW = 2
窗口视图:
Windows:窗口的
HDC
(仅适用于 GL 兼容性渲染器)。macOS:窗口主视图的
NSView*
。iOS:窗口主视图的
UIView*
。
HandleType OPENGL_CONTEXT = 3
OpenGL 上下文(仅适用于 GL 兼容性渲染器):
Windows:窗口的
HGLRC
(原生 GL)或窗口的EGLContext
(ANGLE)。Linux:窗口的
GLXContext*
。macOS:窗口的
NSOpenGLContext*
(原生 GL)或窗口的EGLContext
(ANGLE)。Android:窗口的
EGLContext
。
enum TTSUtteranceEvent:
TTSUtteranceEvent TTS_UTTERANCE_STARTED = 0
发言开始。
TTSUtteranceEvent TTS_UTTERANCE_ENDED = 1
发言顺利结束。
TTSUtteranceEvent TTS_UTTERANCE_CANCELED = 2
发言取消,或者 TTS 服务无法处理。
TTSUtteranceEvent TTS_UTTERANCE_BOUNDARY = 3
发言到达单词或句子的边界。
常量
SCREEN_WITH_MOUSE_FOCUS = -4
代表包含鼠标指针的屏幕。
SCREEN_WITH_KEYBOARD_FOCUS = -3
代表包含具有键盘焦点的窗口的屏幕。
SCREEN_PRIMARY = -2
代表主屏幕。
SCREEN_OF_MAIN_WINDOW = -1
代表主窗口所在的屏幕。如果函数允许指定不同的屏幕,这个值通常是默认值。
MAIN_WINDOW_ID = 0
主窗口的 ID,可以传给需要 window_id
的方法,该窗口由引擎生成。
INVALID_WINDOW_ID = -1
指向一个不存在窗口的 ID。如果没有窗口与请求的结果相匹配,某些 DisplayServer 方法将返回这个 ID。
方法说明
String clipboard_get ( ) const
如果可能,将用户的剪贴板作为字符串返回。
Image clipboard_get_image ( ) const
如果可能,将用户的剪贴板作为图像返回。
String clipboard_get_primary ( ) const
如果可能的话,将用户的主剪贴板作为字符串返回。这是当用户在任何应用程序中选择文本时设置的剪贴板,而不是在按下 Ctrl + C 时设置的。然后可以通过在支持主剪贴板机制的任何应用程序中,通过点击鼠标中键来粘贴该剪贴板数据。
注意:这个方法只在 Linux(X11)上实现。
bool clipboard_has ( ) const
如果用户的剪贴板中有文本内容,则返回 true
。
bool clipboard_has_image ( ) const
如果用户的剪贴板中有图像内容,则返回 true
。
void clipboard_set ( String clipboard )
将用户的剪贴板内容设置为给定的字符串。
void clipboard_set_primary ( String clipboard_primary )
将用户的主剪贴板内容设置为给定的字符串。这是用户在应用程序中选中文本时设置的剪贴板,不是按 Ctrl + C 时设置的。设置后可以在任何支持主剪贴板机制的应用程序中通过点击鼠标中键粘贴剪贴板数据。
注意:这个方法只在 Linux(X11)上实现。
CursorShape cursor_get_shape ( ) const
返回默认鼠标光标形状,由 cursor_set_shape 设置。
void cursor_set_custom_image ( Resource cursor, CursorShape shape=0, Vector2 hotspot=Vector2(0, 0) )
为定义的形状 shape
设置自定义鼠标指针图像。这意味着用户的操作系统和鼠标光标主题不再影响鼠标光标的外观。图像的最大尺寸为 256x256
,否则无法正确显示。还可以设置 hotspot
,用来定义光标的点击位置。默认情况下,hotspot
为 Vector2(0, 0)
,即图像的左上角。另见 cursor_set_shape。
void cursor_set_shape ( CursorShape shape )
设置默认的鼠标光标形状。光标的外观将根据用户的操作系统和鼠标光标主题而变化。另见 cursor_get_shape 和 cursor_set_custom_image。
Error dialog_input_text ( String title, String description, String existing_text, Callable callback )
显示文本输入对话框,这个对话框的外观和行为与操作系统原生对话框一致。无论该对话框因为什么原因而关闭,都会使用文本字段的内容作为 String 参数来调用 callback
。
注意:该方法仅在 macOS 上实现。
Error dialog_show ( String title, String description, PackedStringArray buttons, Callable callback )
显示文本对话框,这个对话框的外观和行为与操作系统原生对话框一致。无论该对话框因为什么原因而关闭,都会使用调用 callback
。
注意:该方法仅在 macOS 上实现。
void enable_for_stealing_focus ( int process_id )
让进程 PID process_id
窃取该窗口的焦点。换句话说,会禁用操作系统对指定 PID 的焦点窃取保护。
注意:该方法仅在 Windows 上实现。
Error file_dialog_show ( String title, String current_directory, String filename, bool show_hidden, FileDialogMode mode, PackedStringArray filters, Callable callback )
显示操作系统原生对话框,用于选择文件系统中的文件或目录。
回调具有以下参数:bool status, PackedStringArray selected_paths, int selected_filter_index
。
注意:如果显示服务器具有 FEATURE_NATIVE_DIALOG 功能,则该方法已被实现。
注意:该方法在 Linux、Windows 和 macOS 上实现。
注意:current_directory
可能会被忽略。
注意:在 Linux 上,show_hidden
被忽略。
注意:在 macOS 上,原生文件对话框没有标题。
注意:在 macOS 上,沙盒应用程序将保存安全范围的书签,以保留对多个会话中打开的文件夹的访问权限。使用 OS.get_granted_permissions 获取已保存书签的列表。
void force_process_and_drop_events ( )
强制窗口管理器进行处理,会忽略所有 InputEvent。另见 process_events。
注意:这个方法在 Windows 和 macOS 上实现。
Color get_accent_color ( ) const
返回操作系统主题强调色。如果强调色未知,则返回 Color(0, 0, 0, 0)
。
注意:这个方法在 macOS 和 Windows 上实现。
Rect2[] get_display_cutouts ( ) const
返回 Rect2 的 Array,其中每个都是显示切口或凹口的边界矩形。这些是相机和传感器使用的无边框屏幕上的非功能区域。如果设备没有切口,则返回一个空数组。另见 get_display_safe_area。
注意:目前仅在 Android 上实现。其他平台将返回一个空数组,即使它们确实有显示切口或凹口。
Rect2i get_display_safe_area ( ) const
返回应渲染交互式控件的显示器的未遮挡区域。另见 get_display_cutouts。
int get_keyboard_focus_screen ( ) const
返回包含具有键盘焦点的窗口的屏幕索引,如果没有被聚焦的窗口,则返回主屏幕。
String get_name ( ) const
返回当前使用的 DisplayServer 的名称。大多数操作系统只有一种 DisplayServer,但 Linux 可以使用多种 DisplayServer(尽管 Godot 中目前只实现了 X11)。
内置显示服务器的名称有 Windows
、macOS
、X11
(Linux)、Android
、iOS
、web
(HTML5)、headless
(使用 --headless
命令行参数启动)。
int get_primary_screen ( ) const
返回主屏幕的索引。
int get_screen_count ( ) const
返回可用的显示器数量。
int get_screen_from_rect ( Rect2 rect ) const
返回包含指定矩形的屏幕的索引。
bool get_swap_cancel_ok ( )
如果对话框中的确定和取消按钮进行了交换,则返回 true
。在 Windows 上默认启用,从而遵循界面规范,可以使用 ProjectSettings.gui/common/swap_cancel_ok 开关。
注意:由 dialog_show 等生成的原生对话框不受影响。
int get_window_at_screen_position ( Vector2i position ) const
返回位于指定屏幕位置 position
的窗口 ID(单位为像素)。使用多个监视器时,屏幕位置是相对于虚拟桌面区域的位置。如果多监视器中使用了不同的屏幕分辨率或朝向,原点有可能位于所有显示器之外,类似于:
* (0, 0) +-------+
| |
+-------------+ | |
| | | |
| | | |
+-------------+ +-------+
PackedInt32Array get_window_list ( ) const
返回属于该进程的 Godot 窗口 ID 列表。
注意:这个列表中不含原生对话框。
int global_menu_add_check_item ( String menu_root, String label, Callable callback=Callable(), Callable key_callback=Callable(), Variant tag=null, Key accelerator=0, int index=-1 )
向 ID 为 menu_root
的全局菜单添加新的可勾选菜单项,显示的文本为 label
。
返回插入菜单项的索引,不保证与 index
的值相同。
还可以定义键盘快捷键 accelerator
,按下后即便该菜单按钮尚未打开,也会进行触发。accelerator
通常是将 KeyModifierMask 和 Key 用按位或操作进行的组合,例如 KEY_MASK_CTRL | KEY_A
(Ctrl + A)。
注意:callback
和 key_callback
Callable 均只接受一个 Variant 参数,传入 Callable 的参数是传给 tag
的参数。
注意:该方法仅在 macOS 上实现。
支持的系统菜单 ID:
"_main" - 主菜单(macOS)。
"_dock" - 程序坞弹出菜单(macOS)。
int global_menu_add_icon_check_item ( String menu_root, Texture2D icon, String label, Callable callback=Callable(), Callable key_callback=Callable(), Variant tag=null, Key accelerator=0, int index=-1 )
向 ID 为 menu_root
的全局菜单添加新的可勾选菜单项,显示的文本为 label
,图标为 icon
。
返回插入菜单项的索引,不保证与 index
的值相同。
还可以定义键盘快捷键 accelerator
,按下后即便该菜单按钮尚未打开,也会进行触发。accelerator
通常是将 KeyModifierMask 和 Key 用按位或操作进行的组合,例如 KEY_MASK_CTRL | KEY_A
(Ctrl + A)。
注意:callback
和 key_callback
Callable 均只接受一个 Variant 参数,传入 Callable 的参数是传给 tag
的参数。
注意:该方法仅在 macOS 上实现。
支持的系统菜单 ID:
"_main" - 主菜单(macOS)。
"_dock" - 程序坞弹出菜单(macOS)。
int global_menu_add_icon_item ( String menu_root, Texture2D icon, String label, Callable callback=Callable(), Callable key_callback=Callable(), Variant tag=null, Key accelerator=0, int index=-1 )
向 ID 为 menu_root
的全局菜单添加新的菜单项,显示的文本为 label
,图标为 icon
。
返回插入菜单项的索引,不保证与 index
的值相同。
还可以定义键盘快捷键 accelerator
,按下后即便该菜单按钮尚未打开,也会进行触发。accelerator
通常是将 KeyModifierMask 和 Key 用按位或操作进行的组合,例如 KEY_MASK_CTRL | KEY_A
(Ctrl + A)。
注意:callback
和 key_callback
Callable 均只接受一个 Variant 参数,传入 Callable 的参数是传给 tag
的参数。
注意:该方法仅在 macOS 上实现。
支持的系统菜单 ID:
"_main" - 主菜单(macOS)。
"_dock" - 程序坞弹出菜单(macOS)。
int global_menu_add_icon_radio_check_item ( String menu_root, Texture2D icon, String label, Callable callback=Callable(), Callable key_callback=Callable(), Variant tag=null, Key accelerator=0, int index=-1 )
向 ID 为 menu_root
的全局菜单添加新的单选菜单项,显示的文本为 label
,图标为 icon
。
返回插入菜单项的索引,不保证与 index
的值相同。
还可以定义键盘快捷键 accelerator
,按下后即便该菜单按钮尚未打开,也会进行触发。accelerator
通常是将 KeyModifierMask 和 Key 用按位或操作进行的组合,例如 KEY_MASK_CTRL | KEY_A
(Ctrl + A)。
注意:单选菜单项只负责显示选中标记,并没有任何内置检查行为,必须手动进行选中、取消选中的操作。关于如何进行控制的更多信息见 global_menu_set_item_checked。
注意:callback
和 key_callback
Callable 均只接受一个 Variant 参数,传入 Callable 的参数是传给 tag
的参数。
注意:该方法仅在 macOS 上实现。
支持的系统菜单 ID:
"_main" - 主菜单(macOS)。
"_dock" - 程序坞弹出菜单(macOS)。
int global_menu_add_item ( String menu_root, String label, Callable callback=Callable(), Callable key_callback=Callable(), Variant tag=null, Key accelerator=0, int index=-1 )
向 ID 为 menu_root
的全局菜单添加新的菜单项,显示的文本为 label
。
返回插入菜单项的索引,不保证与 index
的值相同。
还可以定义键盘快捷键 accelerator
,按下后即便该菜单按钮尚未打开,也会进行触发。accelerator
通常是将 KeyModifierMask 和 Key 用按位或操作进行的组合,例如 KEY_MASK_CTRL | KEY_A
(Ctrl + A)。
注意:callback
和 key_callback
Callable 均只接受一个 Variant 参数,传入 Callable 的参数是传给 tag
的参数。
注意:该方法仅在 macOS 上实现。
支持的系统菜单 ID:
"_main" - 主菜单(macOS)。
"_dock" - 程序坞弹出菜单(macOS)。
int global_menu_add_multistate_item ( String menu_root, String label, int max_states, int default_state, Callable callback=Callable(), Callable key_callback=Callable(), Variant tag=null, Key accelerator=0, int index=-1 )
向 ID 为 menu_root
的全局菜单添加新的菜单项,显示的文本为 label
。
与常规的二态菜单项不同,多状态菜单项的状态可以多于两个,由 max_states
定义。每点击或激活该菜单项一次,状态就会加一。默认值由 default_state
定义。
返回插入菜单项的索引,不保证与 index
的值相同。
还可以定义键盘快捷键 accelerator
,按下后即便该菜单按钮尚未打开,也会进行触发。accelerator
通常是将 KeyModifierMask 和 Key 用按位或操作进行的组合,例如 KEY_MASK_CTRL | KEY_A
(Ctrl + A)。
注意:默认情况下不会展示当前菜单项的状态,应该手动更改。
注意:callback
和 key_callback
Callable 均只接受一个 Variant 参数,传入 Callable 的参数是传给 tag
的参数。
注意:该方法仅在 macOS 上实现。
支持的系统菜单 ID:
"_main" - 主菜单(macOS)。
"_dock" - 程序坞弹出菜单(macOS)。
int global_menu_add_radio_check_item ( String menu_root, String label, Callable callback=Callable(), Callable key_callback=Callable(), Variant tag=null, Key accelerator=0, int index=-1 )
向 ID 为 menu_root
的全局菜单添加新的单选菜单项,显示的文本为 label
。
返回插入菜单项的索引,不保证与 index
的值相同。
还可以定义键盘快捷键 accelerator
,按下后即便该菜单按钮尚未打开,也会进行触发。accelerator
通常是将 KeyModifierMask 和 Key 用按位或操作进行的组合,例如 KEY_MASK_CTRL | KEY_A
(Ctrl + A)。
注意:单选菜单项只负责显示选中标记,并没有任何内置检查行为,必须手动进行选中、取消选中的操作。关于如何进行控制的更多信息见 global_menu_set_item_checked。
注意:callback
和 key_callback
Callable 均只接受一个 Variant 参数,传入 Callable 的参数是传给 tag
的参数。
注意:该方法仅在 macOS 上实现。
支持的系统菜单 ID:
"_main" - 主菜单(macOS)。
"_dock" - 程序坞弹出菜单(macOS)。
int global_menu_add_separator ( String menu_root, int index=-1 )
向 ID 为 menu_root
的全局菜单添加分隔符。分隔符也拥有索引。
返回插入菜单项的索引,不保证与 index
的值相同。
注意:该方法仅在 macOS 上实现。
支持的系统菜单 ID:
"_main" - 主菜单(macOS)。
"_dock" - 程序坞弹出菜单(macOS)。
int global_menu_add_submenu_item ( String menu_root, String label, String submenu, int index=-1 )
向 ID 为 menu_root
的全局菜单添加作为子菜单的菜单项。submenu
参数为全局菜单根菜单项的 ID,会在点击该菜单项时显示
返回插入菜单项的索引,不保证与 index
的值相同。
注意:该方法仅在 macOS 上实现。
支持的系统菜单 ID:
"_main" - 主菜单(macOS)。
"_dock" - 程序坞弹出菜单(macOS)。
void global_menu_clear ( String menu_root )
移除 ID 为 menu_root
的全局菜单中的所有菜单项。
注意:该方法仅在 macOS 上实现。
支持的系统菜单 ID:
"_main" - 主菜单(macOS)。
"_dock" - 程序坞弹出菜单(macOS)。
Key global_menu_get_item_accelerator ( String menu_root, int idx ) const
返回索引为 idx
的菜单项的快捷键。快捷键是能够激活该菜单项的特殊按键组合,无论该控件是否有焦点。
注意:该方法仅在 macOS 上实现。
Callable global_menu_get_item_callback ( String menu_root, int idx ) const
返回索引为 idx
的菜单项的回调。
注意:该方法仅在 macOS 上实现。
int global_menu_get_item_count ( String menu_root ) const
返回 ID 为 menu_root
的全局菜单中菜单项的数量。
注意:该方法仅在 macOS 上实现。
Texture2D global_menu_get_item_icon ( String menu_root, int idx ) const
返回索引为 idx
的菜单项的图标。
注意:该方法仅在 macOS 上实现。
int global_menu_get_item_indentation_level ( String menu_root, int idx ) const
返回索引为 idx
的菜单项的水平偏移量。
注意:该方法仅在 macOS 上实现。
int global_menu_get_item_index_from_tag ( String menu_root, Variant tag ) const
返回标签为指定的 tag
的菜单项的索引。引擎会自动为每个菜单项赋予索引。索引无法手动设置。
注意:该方法仅在 macOS 上实现。
int global_menu_get_item_index_from_text ( String menu_root, String text ) const
返回文本为指定的 text
的菜单项的索引。引擎会自动为每个菜单项赋予索引。索引无法手动设置。
注意:该方法仅在 macOS 上实现。
Callable global_menu_get_item_key_callback ( String menu_root, int idx ) const
返回索引为 idx
的菜单项的快捷键回调。
注意:该方法仅在 macOS 上实现。
int global_menu_get_item_max_states ( String menu_root, int idx ) const
返回多状态项的状态数。详见 global_menu_add_multistate_item。
注意:该方法仅在 macOS 上实现。
int global_menu_get_item_state ( String menu_root, int idx ) const
返回多状态项的状态。详见 global_menu_add_multistate_item。
注意:该方法仅在 macOS 上实现。
String global_menu_get_item_submenu ( String menu_root, int idx ) const
返回索引为 idx
的菜单项的子菜单 ID。关于如何添加子菜单的更多信息见 global_menu_add_submenu_item。
注意:该方法仅在 macOS 上实现。
Variant global_menu_get_item_tag ( String menu_root, int idx ) const
返回指定菜单项的元数据,可能是任何类型。元数据可以使用 global_menu_set_item_tag 设置,可以方法地为菜单项关联上下文数据。
注意:该方法仅在 macOS 上实现。
String global_menu_get_item_text ( String menu_root, int idx ) const
返回索引为 idx
的菜单项的文本。
注意:该方法仅在 macOS 上实现。
String global_menu_get_item_tooltip ( String menu_root, int idx ) const
返回索引为 idx
的菜单项所关联的工具提示。
注意:该方法仅在 macOS 上实现。
bool global_menu_is_item_checkable ( String menu_root, int idx ) const
如果索引为 idx
的菜单项能够以某种方式选中,即有复选框或单选按钮,则返回 true
。
注意:该方法仅在 macOS 上实现。
bool global_menu_is_item_checked ( String menu_root, int idx ) const
如果索引为 idx
的菜单项处于选中状态,则返回 true
。
注意:该方法仅在 macOS 上实现。
bool global_menu_is_item_disabled ( String menu_root, int idx ) const
如果索引为 idx
的菜单项处于禁用状态,则返回 true
。禁用状态下无法被选中,也无法激活动作。
关于如何禁用菜单项的更多信息见 global_menu_set_item_disabled。
注意:该方法仅在 macOS 上实现。
bool global_menu_is_item_hidden ( String menu_root, int idx ) const
如果索引为 idx
的菜单项被隐藏,则返回 true
。
关于如何隐藏菜单项的更多信息见 global_menu_set_item_hidden。
注意:该方法仅在 macOS 上实现。
bool global_menu_is_item_radio_checkable ( String menu_root, int idx ) const
如果索引为 idx
的菜单项为单选按钮风格,则返回 true
。
注意:仅为装饰作用;必须自行为单选组添加选中、取消选中的逻辑。
注意:该方法仅在 macOS 上实现。
void global_menu_remove_item ( String menu_root, int idx )
从全局菜单 menu_root
移除索引为 idx
的菜单项。
注意:位置在被移除菜单项之后的菜单项的索引号都会减一。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_accelerator ( String menu_root, int idx, Key keycode )
设置索引为 idx
的菜单项的快捷键。keycode
可以是单一 Key,也可以是 KeyModifierMask 和 Key 用按位或操作进行的组合,例如 KEY_MASK_CTRL | KEY_A
(Ctrl + A)。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_callback ( String menu_root, int idx, Callable callback )
设置索引为 idx
的菜单项的回调。回调会在按下菜单项时发出。
注意:callback
Callable 只接受一个 Variant 参数,传入 Callable 的参数是创建菜单项时传给 tag
参数的值。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_checkable ( String menu_root, int idx, bool checkable )
设置索引为 idx
的菜单项是否为复选框。如果为 false
,则会将该菜单项的类型设置为纯文本。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_checked ( String menu_root, int idx, bool checked )
设置索引为 idx
的菜单项的选中状态。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_disabled ( String menu_root, int idx, bool disabled )
启用/禁用索引为 idx
的菜单项。禁用状态下无法被选中,也无法激活动作。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_hidden ( String menu_root, int idx, bool hidden )
隐藏/显示索引为 idx
的菜单项。当它被隐藏时,项目不会出现在菜单中,并且无法调用其操作。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_hover_callbacks ( String menu_root, int idx, Callable callback )
设置索引为 idx
的菜单项的回调。回调会在菜单项被悬停时发出。
注意:callback
Callable 需要接受一个 Variant 参数,传入 Callable 的参数是创建菜单项时传给 tag
参数的值。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_icon ( String menu_root, int idx, Texture2D icon )
替换指定索引 idx
的 Texture2D 图标。
注意:该方法仅在 macOS 上实现。
注意:该方法不支持 macOS 的“_dock”菜单项。
void global_menu_set_item_indentation_level ( String menu_root, int idx, int level )
设置索引为 idx
的菜单项的水平偏移量。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_key_callback ( String menu_root, int idx, Callable key_callback )
设置索引为 idx
的菜单项的回调。回调会在激活快捷键时发出。
注意:key_callback
Callable 只接受一个 Variant 参数,传入 Callable 的参数是创建菜单项时传给 tag
参数的值。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_max_states ( String menu_root, int idx, int max_states )
设置多状态项的状态数。详见 global_menu_add_multistate_item。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_radio_checkable ( String menu_root, int idx, bool checkable )
将索引为 idx
的菜单项设置为单选按钮风格。如果为 false
,则会将该菜单项的类型设置为纯文本。
注意:仅为装饰作用;必须自行为单选组添加选中、取消选中的逻辑。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_state ( String menu_root, int idx, int state )
设置多状态项的状态。详见 global_menu_add_multistate_item。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_submenu ( String menu_root, int idx, String submenu )
设置索引为 idx
的菜单项的子菜单。子菜单是某个全局菜单根菜单项的 ID,点击该菜单项时会显示子菜单。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_tag ( String menu_root, int idx, Variant tag )
设置指定菜单项的元数据,可以是任何类型。后续可以使用 global_menu_get_item_tag 获取,可以方法地为菜单项关联上下文数据。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_text ( String menu_root, int idx, String text )
设置索引为 idx
的菜单项的文本。
注意:该方法仅在 macOS 上实现。
void global_menu_set_item_tooltip ( String menu_root, int idx, String tooltip )
设置索引为 idx
的菜单项的工具提示 String。
注意:该方法仅在 macOS 上实现。
void global_menu_set_popup_callbacks ( String menu_root, Callable open_callback, Callable close_callback )
注册当菜单分别即将显示或关闭时发出的可调用对象。
bool has_feature ( Feature feature ) const
如果当前的 DisplayServer 支持指定的特性 feature
,则返回 true
,否则返回 false
。
Vector2i ime_get_selection ( ) const
返回输入法编辑器编组字符串中选中的文本,Vector2i 的 x
分量为光标的位置,y
则为所选项的长度。
注意:该方法仅在 macOS 上实现。
String ime_get_text ( ) const
返回输入法编辑器窗口中的编组字符串。
注意:该方法仅在 macOS 上实现。
bool is_dark_mode ( ) const
如果操作系统正在使用暗黑模式,则返回 true
。
注意:该方法在 Android、iOS、macOS、Windows 和 Linux(X11)上实现。
bool is_dark_mode_supported ( ) const
如果操作系统支持暗黑模式,则返回 true
。
注意:该方法在 Android、iOS、macOS、Windows 和 Linux(X11)上实现。
bool is_touchscreen_available ( ) const
如果触摸事件可用(Android 或 iOS)、在 Web 平台上检测到该功能或如果 ProjectSettings.input_devices/pointing/emulate_touch_from_mouse 为 true
时,则返回 true
。
int keyboard_get_current_layout ( ) const
返回激活的键盘布局的索引。
注意:本方法在 Linux(X11)、macOS 和 Windows 上实现。
Key keyboard_get_keycode_from_physical ( Key keycode ) const
将物理(美式 QWERTY)键码 keycode
转换为激活键盘布局中的键码。
注意:本方法在 Linux(X11)、macOS 和 Windows 上实现。
Key keyboard_get_label_from_physical ( Key keycode ) const
将物理(美式 QWERTY)键码 keycode
转换为活动键盘布局中的按键上印刷的本地化标签。
注意:该方法在 Linux(X11)、macOS 和 Windows 上实现。
int keyboard_get_layout_count ( ) const
返回键盘布局的数量。
注意:本方法在 Linux(X11)、macOS 和 Windows 上实现。
String keyboard_get_layout_language ( int index ) const
返回位于 index
位置的键盘布局的 ISO-639/BCP-47 语言代码。
注意:本方法在 Linux(X11)、macOS 和 Windows 上实现。
String keyboard_get_layout_name ( int index ) const
返回位于 index
位置的键盘布局的本地化名称。
注意:本方法在 Linux(X11)、macOS 和 Windows 上实现。
void keyboard_set_current_layout ( int index )
设置激活的键盘布局。
注意:本方法在 Linux(X11)、macOS 和 Windows 上实现。
BitField<MouseButtonMask> mouse_get_button_state ( ) const
以位掩码的形式返回当前鼠标按键的状态(各个按钮是否处于按下状态)。如果同时按下了多个按键,则会同时设置多个比特位。等价于 Input.get_mouse_button_mask。
MouseMode mouse_get_mode ( ) const
返回当前的鼠标模式。另见 mouse_set_mode。
Vector2i mouse_get_position ( ) const
返回鼠标光标的当前位置,使用屏幕坐标。
void mouse_set_mode ( MouseMode mouse_mode )
设置当前的鼠标模式。另见 mouse_get_mode。
void process_events ( )
执行窗口管理器处理,包括输入的清空。另见 force_process_and_drop_events、Input.flush_buffered_events、Input.use_accumulated_input。
int screen_get_dpi ( int screen=-1 ) const
返回指定屏幕的每英寸点数密度。如果 screen
为 SCREEN_OF_MAIN_WINDOW(默认值),则将使用带有主窗口的屏幕。
注意:在 macOS 上,如果使用小数显示缩放模式,则返回值不准确。
注意:在 Android 设备上,实际屏幕密度分为六种通用密度:
ldpi - 120 dpi
mdpi - 160 dpi
hdpi - 240 dpi
xhdpi - 320 dpi
xxhdpi - 480 dpi
xxxhdpi - 640 dpi
注意:该方法在 Android、Linux(X11)、macOS 和 Windows 上实现。在不受支持的平台上返回 72
。
Image screen_get_image ( int screen=-1 ) const
返回 screen
的屏幕截图。
注意:该方法在 Linux(X11)、macOS 和 Windows 上实现。
注意:在 macOS 上,该方法需要“屏幕录制”权限,如果未授予权限将返回桌面壁纸颜色。
float screen_get_max_scale ( ) const
返回所有屏幕的最大缩放系数。
注意:在 macOS 上,如果系统中至少有一个 hiDPI(Retina)屏幕,则返回值为 2.0
,在所有其他情况下返回值为 1.0
。
注意:该方法仅在 macOS 上实现。
ScreenOrientation screen_get_orientation ( int screen=-1 ) const
返回 screen
的当前朝向。另见 screen_set_orientation。
注意:该方法在 Android 和 iOS 上实现。
Color screen_get_pixel ( Vector2i position ) const
返回 position
处的显示像素的颜色。
注意:该方法在 Linux(X11)、macOS 和 Windows 上实现。
注意:在 macOS 上,该方法需要“屏幕录制”权限,如果未授予权限将返回桌面壁纸颜色。
Vector2i screen_get_position ( int screen=-1 ) const
返回屏幕左上角的位置,单位为像素。使用多个监视器时,屏幕位置是相对于虚拟桌面区域的位置。如果多监视器中使用了不同的屏幕分辨率或朝向,原点有可能位于所有显示器之外,类似于:
* (0, 0) +-------+
| |
+-------------+ | |
| | | |
| | | |
+-------------+ +-------+
另见 screen_get_size。
float screen_get_refresh_rate ( int screen=-1 ) const
返回指定屏幕的当前刷新率。如果 screen
为 SCREEN_OF_MAIN_WINDOW(默认值),将使用带有主窗口的屏幕。
注意:如果 DisplayServer 未能找到指定屏幕的刷新率,则返回 -1.0
。在 Web 上,screen_get_refresh_rate 将始终返回 -1.0
,因为无法在该平台上检索到刷新率。
要在该方法失败时回退至默认刷新率,请尝试:
var refresh_rate = DisplayServer.screen_get_refresh_rate()
if refresh_rate < 0:
refresh_rate = 60.0
float screen_get_scale ( int screen=-1 ) const
返回按索引指定的屏幕的缩放系数。
注意:在 macOS 上,对于 hiDPI (Retina) 屏幕,返回值为 2.0
;对于所有其他情况,返回值为 1.0
。
注意:该方法仅在 macOS 上实现。
Vector2i screen_get_size ( int screen=-1 ) const
返回屏幕大小。单位:像素。另见 screen_get_position 和 screen_get_usable_rect。
Rect2i screen_get_usable_rect ( int screen=-1 ) const
返回屏幕上没有被状态栏遮挡的部分,单位为像素。另见 screen_get_size。
bool screen_is_kept_on ( ) const
如果操作系统的节电措施永远不会关闭屏幕,则返回 true
。另见 screen_set_keep_on。
void screen_set_keep_on ( bool enable )
设置屏幕是否总是不会被操作系统的节能措施关闭。另见 screen_is_kept_on。
void screen_set_orientation ( ScreenOrientation orientation, int screen=-1 )
设置 screen
的 orientation
。另见 screen_get_orientation。
注意:在 iOS 上,如果 ProjectSettings.display/window/handheld/orientation 未设置为 SCREEN_SENSOR,则该方法无效。
void set_icon ( Image image )
使用 Image 设置窗口图标(通常显示在左上角)。要使用操作系统的原生格式设置图标,请改用 set_native_icon。
void set_native_icon ( String filename )
使用操作系统的原生格式设置窗口图标(通常显示在左上角)。位于 filename
的文件在 Windows 上必须为 .ico
格式,在 macOS 上必须为 .icns
格式。使用特制的 .ico
或 .icns
图标,就能够让 set_native_icon 指定以不同尺寸显示图标时显示不同的图标。大小由操作系统和用户首选项决定(包括显示器缩放系数)。要使用其他格式的图标,请改用 set_icon。
String tablet_get_current_driver ( ) const
返回当前活动的数位板驱动程序的名称。
注意:该方法仅在 Windows 上实现。
int tablet_get_driver_count ( ) const
返回可用的数位板驱动程序的总数。
注意:该方法仅在 Windows 上实现。
String tablet_get_driver_name ( int idx ) const
返回给定索引的数位板驱动程序名称。
注意:该方法仅在 Windows 上实现。
void tablet_set_current_driver ( String name )
设置活动的数位板驱动程序的名称。
注意:该方法仅在 Windows 上实现。
Dictionary[] tts_get_voices ( ) const
返回语音信息字典的 Array。
每个 Dictionary 包含两个 String 条目:
name
是语音名称。id
是语音标识符。language
是语言代码,格式为lang_Variant
。lang
部分是小写的基于 ISO-639 标准的 2 或 3 字母代码。而Variant
部分是一个依赖于引擎的字符串,描述国家、地区或/和方言。
请注意,Godot 依赖于系统库来实现文本到语音的功能。这些库在 Windows 和 MacOS 上是默认安装的,但并非安装在所有 Linux 发行版上。如果它们不存在,此方法将返回一个空列表。这适用于 Linux 上的 Godot 用户,以及在 Linux 上运行使用文本到语音的 Godot 游戏的最终用户。
注意:这个方法在 Android、iOS、Web、Linux(X11)、macOS 和 Windows 上实现。
注意:ProjectSettings.audio/general/text_to_speech 应当为 true
才能够使用文本到语音功能。
PackedStringArray tts_get_voices_for_language ( String language ) const
返回 language
的语音标识符的 PackedStringArray。
注意:该方法在 Android、iOS、Web、Linux(X11)、macOS 和 Windows 上实现。
注意:ProjectSettings.audio/general/text_to_speech 应为 true
才能使用文本转语音。
bool tts_is_paused ( ) const
如果合成器处于暂停状态,则返回 true
。
注意:该方法在 Android、iOS、Web、Linux(X11)、macOS 和 Windows 上实现。
注意:ProjectSettings.audio/general/text_to_speech 应为 true
才能使用文本转语音。
bool tts_is_speaking ( ) const
如果合成器正在生成语音,或者有发言正在队列中等待,则返回 true
。
注意:该方法在 Android、iOS、Web、Linux(X11)、macOS 和 Windows 上实现。
注意:ProjectSettings.audio/general/text_to_speech 应为 true
才能使用文本转语音。
void tts_pause ( )
让合成器进入暂停状态。
注意:该方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows 上实现。
注意:要使用文本转语音,ProjectSettings.audio/general/text_to_speech 应该为 true
。
void tts_resume ( )
让处于暂停状态的合成器继续执行。
注意:该方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows 上实现。
注意:要使用文本转语音,ProjectSettings.audio/general/text_to_speech 应该为 true
。
void tts_set_utterance_callback ( TTSUtteranceEvent event, Callable callable )
添加回调,会在发言开始、结束、取消、到达文本边界时调用。
TTS_UTTERANCE_STARTED、TTS_UTTERANCE_ENDED、TTS_UTTERANCE_CANCELED 可调用体的方法应接受一个 int 参数,即发言 ID。
TTS_UTTERANCE_BOUNDARY 可调用体的方法应接受两个 int 参数:字符索引和发言 ID。
注意:边界回调的颗粒度由引擎决定。
注意:该方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows 上实现。
注意:要使用文本转语音,ProjectSettings.audio/general/text_to_speech 应该为 true
。
void tts_speak ( String text, String voice, int volume=50, float pitch=1.0, float rate=1.0, int utterance_id=0, bool interrupt=false )
向队列中添加发言。如果 interrupt
为 true
,则会先清空队列。
voice
语音标识符是 tts_get_voices 所返回的"id"
值,也可以是 tts_get_voices_for_language 返回的值。volume
音量从0
(最低)到100
(最高)。pitch
音高从0.0
(最低)到2.0
(最高),1.0
为当前语音的默认音高。rate
语速从0.1
(最低)到10.0
(最高),1.0
为普通语速。其他值为相对百分比。utterance_id
话语 ID 会作为参数传递给回调函数。
注意:在 Windows 和 Linux(X11)上,发言的 text
可以使用 SSML 标记。对 SSML 支持取决于引擎和语音。如果引擎不支持 SSML,你应该在调用 tts_speak 之前剥离所有 XML 标记。
注意:音高、语速、音量的颗粒度由引擎和语音决定。设置的值可能被截断。
注意:该方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows 上实现。
注意:要使用文本转语音,ProjectSettings.audio/general/text_to_speech 应该为 true
。
void tts_stop ( )
停止执行中的合成器,移除队列中的所有发言。
注意:该方法在 Android、iOS、Web、Linux(X11)、macOS 以及 Windows 上实现。
注意:要使用文本转语音,ProjectSettings.audio/general/text_to_speech 应该为 true
。
int virtual_keyboard_get_height ( ) const
返回键盘在屏幕上的高度,单位为像素。如果没有键盘或当前键盘被隐藏,则返回0。
void virtual_keyboard_hide ( )
如果虚拟键盘为显示状态则隐藏虚拟键盘,否则不做任何操作。
void virtual_keyboard_show ( String existing_text, Rect2 position=Rect2(0, 0, 0, 0), VirtualKeyboardType type=0, int max_length=-1, int cursor_start=-1, int cursor_end=-1 )
如果该平台有虚拟键盘,则显示虚拟键盘。
existing_text
参数对于实现你自己的 LineEdit 或 TextEdit 很有用,因为它告诉虚拟键盘已经输入了哪些文本(虚拟键盘使用它进行自动更正和预测)。
position
参数为编辑文本的屏幕空间 Rect2。
type
参数允许配置要显示的虚拟键盘类型。
max_length
在当与 -1
不同时,限制可输入的字符数。
如果未设置 cursor_end
,则可选参数 cursor_start
可以定义当前文本光标位置。
可选参数 cursor_start
和 cursor_end
,可以定义当前文本选区。
注意:该方法在 Android、iOS 和 Web 上实现。
void warp_mouse ( Vector2i position )
将鼠标光标位置设置为相对于当前聚焦的游戏窗口管理器窗口左上角的原点的给定 position
。
注意:warp_mouse 仅在 Windows、macOS 和 Linux 上受支持。它在 Android、iOS 和 Web 上无效。
bool window_can_draw ( int window_id=0 ) const
如果可以在 window_id
指定的窗口中绘制任何内容,则返回 true
,否则返回 false
。使用 --disable-render-loop
命令行参数或无头构建将返回 false
。
int window_get_active_popup ( ) const
返回活动弹出窗口的 ID,如果没有则返回 INVALID_WINDOW_ID。
int window_get_attached_instance_id ( int window_id=0 ) const
返回 window_id
所附加的 Window 的 Object.get_instance_id。
int window_get_current_screen ( int window_id=0 ) const
该函数返回窗口 window_id
所在的屏幕。如果屏幕跨越多个显示器,则返回窗口中心所在的屏幕。另见 window_set_current_screen 。
bool window_get_flag ( WindowFlags flag, int window_id=0 ) const
返回给定窗口当前的 flag
值。
Vector2i window_get_max_size ( int window_id=0 ) const
返回该窗口的最大尺寸,单位为像素。另见 window_set_max_size。
Vector2i window_get_min_size ( int window_id=0 ) const
返回该窗口的最小尺寸,单位为像素。另见 window_set_min_size。
WindowMode window_get_mode ( int window_id=0 ) const
返回给定窗口的模式。
int window_get_native_handle ( HandleType handle_type, int window_id=0 ) const
该函数返回用于插件的内部结构指针。
注意:该方法在 Android、Linux(X11)、macOS 和 Windows 上实现。
Rect2i window_get_popup_safe_rect ( int window ) const
该函数返回控件或菜单项在屏幕坐标系统中的边界框,这个控件或菜单项被用来打开弹出窗口。
Vector2i window_get_position ( int window_id=0 ) const
返回屏幕上给定窗口的客户端区域位置。
Vector2i window_get_position_with_decorations ( int window_id=0 ) const
该函数返回给定窗口在屏幕上的位置,包括操作系统绘制的边框。另见 window_get_position。
Vector3i window_get_safe_title_margins ( int window_id=0 ) const
当设置了 WINDOW_FLAG_EXTEND_TO_TITLE 标志时,该函数返回标题左边距 (x
)、右边距 (y
) 和高度 (z
),这些边距可以安全地使用(不包含任何按钮或其他元素)。
Vector2i window_get_size ( int window_id=0 ) const
返回窗口的大小(单位为像素),不包含操作系统绘制的边框,该窗口由 window_id
指定。这个区域也叫做“客户区域”。另见 window_get_size_with_decorations、window_set_size、window_get_position。
Vector2i window_get_size_with_decorations ( int window_id=0 ) const
返回窗口的大小(单位为像素),包含操作系统绘制的边框,该窗口由 window_id
指定。另见 window_get_size。
Vector2i window_get_title_size ( String title, int window_id=0 ) const
返回由 window_id
指定的窗口的估计窗口标题栏大小(包括文本和窗口按钮)(单位:像素)。该方法不会更改窗口标题。
注意:该方法在 macOS 和 Windows 上实现。
VSyncMode window_get_vsync_mode ( int window_id=0 ) const
返回给定窗口的垂直同步模式。
bool window_is_focused ( int window_id=0 ) const
如果 window_id
指定的窗口已获得焦点,则返回 true
。
bool window_is_maximize_allowed ( int window_id=0 ) const
如果给定的窗口能够最大化(最大化按钮已启用),则返回 true
。
bool window_maximize_on_title_dbl_click ( ) const
如果双击窗口标题应将其最大化,则返回 true
。
注意:这个方法仅在 macOS 上实现。
bool window_minimize_on_title_dbl_click ( ) const
如果双击窗口标题应将其最小化,则返回 true
。
注意:这个方法仅在 macOS 上实现。
void window_move_to_foreground ( int window_id=0 )
将由 window_id
指定的窗口移动至前台,使其位于其他窗口之上。
void window_request_attention ( int window_id=0 )
让由 window_id
指定的窗口请求注意,该窗口获得焦点之前会闪烁窗口标题和任务栏项目。如果该窗口目前持有焦点,则通常是没有可见效果的。实际的行为因操作系统而异。
void window_set_current_screen ( int screen, int window_id=0 )
将由 window_id
指定的窗口移动至指定的屏幕 screen
。另见 window_get_current_screen。
void window_set_drop_files_callback ( Callable callback, int window_id=0 )
设置回调 callback
,将文件从操作系统的文件管理器拖放到由 window_id
指定的窗口中时会进行调用。
警告:仅限高级用户!将这样的回调添加到 Window 节点将覆盖其默认实现,这可能会引入错误。
注意:这个方法在 Windows、macOS、Linux(X11)、Web 上实现。
void window_set_exclusive ( int window_id, bool exclusive )
如果设置为 true
,该窗口将始终位于其父窗口之上,父窗口将在该窗口打开时忽略输入。
注意:在 macOS 上,独占窗口被限制在与父窗口相同的空间(虚拟桌面或屏幕)中。
注意:该方法在 macOS 和 Windows 上实现。
void window_set_flag ( WindowFlags flag, bool enabled, int window_id=0 )
启用或禁用给定窗口的给定标志 flag
。可能的值和相应的行为见 WindowFlags。
void window_set_ime_active ( bool active, int window_id=0 )
设置是否应该为窗口启用输入法编辑器,该窗口由 window_id
指定。另见 window_set_ime_position。
void window_set_ime_position ( Vector2i position, int window_id=0 )
设置指定 window_id
的输入法编辑器弹出框的位置。仅在指定 window_id
的 window_set_ime_active 为 true
时有效。
void window_set_input_event_callback ( Callable callback, int window_id=0 )
设置回调 callback
,向由 window_id
指定的窗口发送任何 InputEvent 时会进行回调。
警告:仅限高级用户!将这样的回调添加到 Window 节点将覆盖其默认实现,这可能会引入错误。
void window_set_input_text_callback ( Callable callback, int window_id=0 )
设置回调 callback
,使用虚拟键盘向由 window_id
指定的窗口输入文本时会进行回调。
警告:仅限高级用户!将这样的回调添加到 Window 节点将覆盖其默认实现,这可能会引入错误。
void window_set_max_size ( Vector2i max_size, int window_id=0 )
设置由 window_id
指定的窗口的最大大小(单位为像素)。通常,用户将无法拖动窗口使其小于指定大小。另见 window_get_max_size。
注意:建议改用 Window.max_size 更改此值。
注意:使用第三方工具,用户可以禁用窗口几何限制,从而绕过此限制。
void window_set_min_size ( Vector2i min_size, int window_id=0 )
将给定窗口的最小大小设置为 min_size
(单位为像素)。通常,用户将无法拖动窗口使其大于指定大小。另见 window_get_min_size。
注意:建议改用 Window.min_size 来更改此值。
注意:默认情况下,主窗口的最小大小为 Vector2i(64, 64)
。这可以防止将窗口调整为接近零的大小时可能出现的问题。
注意:使用第三方工具,用户可以禁用窗口几何限制,从而绕过此限制。
void window_set_mode ( WindowMode mode, int window_id=0 )
将给定窗口的窗口模式设置为 mode
。可能的值以及各个模式的行为见 WindowMode。
注意:将窗口设置为全屏会强制将无边框标志设为 true
,所以不再需要时请务必将其设回 false
。
void window_set_mouse_passthrough ( PackedVector2Array region, int window_id=0 )
设置一个接受鼠标事件的窗口的多边形区域。该区域外的鼠标事件将被传递出去。
传递一个空数组将禁用穿透支持(所有鼠标事件将被窗口拦截,这是默认行为)。
GDScriptC#
# 设置区域,使用 Path2D 节点。
DisplayServer.window_set_mouse_passthrough($Path2D.curve.get_baked_points())
# 设置区域,使用 Polygon2D 节点。
DisplayServer.window_set_mouse_passthrough($Polygon2D.polygon)
# 重置区域为默认值。
DisplayServer.window_set_mouse_passthrough([])
// 设置区域,使用 Path2D 节点。
DisplayServer.WindowSetMousePassthrough(GetNode<Path2D>("Path2D").Curve.GetBakedPoints());
// 设置区域,使用 Polygon2D 节点。
DisplayServer.WindowSetMousePassthrough(GetNode<Polygon2D>("Polygon2D").Polygon);
// 重置区域为默认值。
DisplayServer.WindowSetMousePassthrough(new Vector2[] {});
注意:在 Windows 上,不会绘制位于区域之外的窗口部分,而在 Linux(X11)和 macOS 上则会绘制。
注意:该方法在 Linux(X11)、macOS 和 Windows 上实现。
void window_set_popup_safe_rect ( int window, Rect2i rect )
设置用于打开弹出窗口的控件或菜单项的范围框,使用屏幕坐标系。在该区域中点击不会自动关闭该弹出框。
void window_set_position ( Vector2i position, int window_id=0 )
将给定窗口的位置设置为 position
。使用多个监视器时,屏幕位置是相对于虚拟桌面区域的位置。如果多监视器中使用了不同的屏幕分辨率或朝向,原点有可能位于所有显示器之外,类似于:
* (0, 0) +-------+
| |
+-------------+ | |
| | | |
| | | |
+-------------+ +-------+
另见 window_get_position 和 window_set_size。
注意:建议改用 Window.position 更改此值。
void window_set_rect_changed_callback ( Callable callback, int window_id=0 )
设置回调 callback
,由 window_id
指定的窗口发生移动或调整大小时会进行回调。
警告:仅限高级用户!将这样的回调添加到 Window 节点将覆盖其默认实现,这可能会引入错误。
void window_set_size ( Vector2i size, int window_id=0 )
将给定窗口的大小设置为 size
(单位为像素)。另见 window_get_size 和 window_get_position。
注意:建议改用 Window.size 更改此值。
void window_set_title ( String title, int window_id=0 )
将给定窗口的标题设置为 title
。
注意:建议改用 Window.title 更改此值。
注意:避免每一帧都更改窗口标题,因为这会导致某些窗口管理器出现性能问题。尝试每秒最多更改几次窗口标题。
void window_set_transient ( int window_id, int parent_window_id )
设置窗口瞬态父级。瞬态窗口将与其瞬态父级一起销毁,并在关闭时将焦点返回到它们的父级。瞬态窗口显示在非排他性全屏父窗口的顶部。瞬态窗口无法进入全屏模式。
注意:建议改用 Window.transient 更改此值。
注意:行为可能因平台而异。
void window_set_vsync_mode ( VSyncMode vsync_mode, int window_id=0 )
设置给定窗口的垂直同步模式。另见 ProjectSettings.display/window/vsync/vsync_mode。
参阅 VSyncMode 了解可能的值,以及它们如何影响应用程序的行为。
根据平台和使用的渲染器,如果不支持所需的模式,引擎将回退到 VSYNC_ENABLED。
注意:除 VSYNC_ENABLED 以外的垂直同步模式,仅支持 Forward+ 和 Mobile 渲染方式,不支持 Compatibility。
void window_set_window_buttons_offset ( Vector2i offset, int window_id=0 )
设置了 WINDOW_FLAG_EXTEND_TO_TITLE 标志时,会设置第一个标题栏按钮中心的偏移量。
注意:这个标志仅在 macOS 上实现。
void window_set_window_event_callback ( Callable callback, int window_id=0 )
设置回调 callback
,由 window_id
指定的窗口发生事件时会进行回调。
警告:仅限高级用户!将这样的回调添加到 Window 节点将覆盖其默认实现,这可能会引入错误。
© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7
.
Built with Sphinx using a theme provided by Read the Docs.