DisplayServer

继承: Object

用于低级窗口管理的服务器接口。

描述

DisplayServer处理与窗口管理相关的所有内容。它与OS分开,因为单个操作系统可能支持多个显示服务器。

Headless mode:使用--head less命令行参数启动引擎禁用所有渲染和窗口管理功能。在这种情况下,DisplayServer中的大多数函数将返回虚拟值。

方法

void

beep() const

String

clipboard_get() const

Image

clipboard_get_image() const

String

clipboard_get_primary() const

bool

clipboard_has() const

bool

clipboard_has_image() const

void

clipboard_set(clipboard: String)

void

clipboard_set_primary(clipboard_primary: String)

int

create_status_indicator(icon: Texture2D, tooltip: String, callback: Callable)

CursorShape

cursor_get_shape() const

void

cursor_set_custom_image(cursor: Resource, shape: CursorShape = 0, hotspot: Vector2 = Vector2(0, 0))

void

cursor_set_shape(shape: CursorShape)

void

delete_status_indicator(id: int)

Error

dialog_input_text(title: String, description: String, existing_text: String, callback: Callable)

Error

dialog_show(title: String, description: String, buttons: PackedStringArray, callback: Callable)

void

enable_for_stealing_focus(process_id: int)

Error

file_dialog_show(title: String, current_directory: String, filename: String, show_hidden: bool, mode: FileDialogMode, filters: PackedStringArray, callback: Callable)

Error

file_dialog_with_options_show(title: String, current_directory: String, root: String, filename: String, show_hidden: bool, mode: FileDialogMode, filters: PackedStringArray, options: Array[Dictionary], callback: Callable)

void

force_process_and_drop_events()

Color

get_accent_color() const

Color

get_base_color() const

Array[Rect2]

get_display_cutouts() const

Rect2i

get_display_safe_area() const

int

get_keyboard_focus_screen() const

String

get_name() const

int

get_primary_screen() const

int

get_screen_count() const

int

get_screen_from_rect(rect: Rect2) const

bool

get_swap_cancel_ok()

int

get_window_at_screen_position(position: Vector2i) const

PackedInt32Array

get_window_list() const

int

global_menu_add_check_item(menu_root: String, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

global_menu_add_icon_check_item(menu_root: String, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

global_menu_add_icon_item(menu_root: String, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

global_menu_add_icon_radio_check_item(menu_root: String, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

global_menu_add_item(menu_root: String, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

global_menu_add_multistate_item(menu_root: String, label: String, max_states: int, default_state: int, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

global_menu_add_radio_check_item(menu_root: String, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

global_menu_add_separator(menu_root: String, index: int = -1)

int

global_menu_add_submenu_item(menu_root: String, label: String, submenu: String, index: int = -1)

void

global_menu_clear(menu_root: String)

Key

global_menu_get_item_accelerator(menu_root: String, idx: int) const

Callable

global_menu_get_item_callback(menu_root: String, idx: int) const

int

global_menu_get_item_count(menu_root: String) const

Texture2D

global_menu_get_item_icon(menu_root: String, idx: int) const

int

global_menu_get_item_indentation_level(menu_root: String, idx: int) const

int

global_menu_get_item_index_from_tag(menu_root: String, tag: Variant) const

int

global_menu_get_item_index_from_text(menu_root: String, text: String) const

Callable

global_menu_get_item_key_callback(menu_root: String, idx: int) const

int

global_menu_get_item_max_states(menu_root: String, idx: int) const

int

global_menu_get_item_state(menu_root: String, idx: int) const

String

global_menu_get_item_submenu(menu_root: String, idx: int) const

Variant

global_menu_get_item_tag(menu_root: String, idx: int) const

String

global_menu_get_item_text(menu_root: String, idx: int) const

String

global_menu_get_item_tooltip(menu_root: String, idx: int) const

Dictionary

global_menu_get_system_menu_roots() const

bool

global_menu_is_item_checkable(menu_root: String, idx: int) const

bool

global_menu_is_item_checked(menu_root: String, idx: int) const

bool

global_menu_is_item_disabled(menu_root: String, idx: int) const

bool

global_menu_is_item_hidden(menu_root: String, idx: int) const

bool

global_menu_is_item_radio_checkable(menu_root: String, idx: int) const

void

global_menu_remove_item(menu_root: String, idx: int)

void

global_menu_set_item_accelerator(menu_root: String, idx: int, keycode: Key)

void

global_menu_set_item_callback(menu_root: String, idx: int, callback: Callable)

void

global_menu_set_item_checkable(menu_root: String, idx: int, checkable: bool)

void

global_menu_set_item_checked(menu_root: String, idx: int, checked: bool)

void

global_menu_set_item_disabled(menu_root: String, idx: int, disabled: bool)

void

global_menu_set_item_hidden(menu_root: String, idx: int, hidden: bool)

void

global_menu_set_item_hover_callbacks(menu_root: String, idx: int, callback: Callable)

void

global_menu_set_item_icon(menu_root: String, idx: int, icon: Texture2D)

void

global_menu_set_item_indentation_level(menu_root: String, idx: int, level: int)

void

global_menu_set_item_key_callback(menu_root: String, idx: int, key_callback: Callable)

void

global_menu_set_item_max_states(menu_root: String, idx: int, max_states: int)

void

global_menu_set_item_radio_checkable(menu_root: String, idx: int, checkable: bool)

void

global_menu_set_item_state(menu_root: String, idx: int, state: int)

void

global_menu_set_item_submenu(menu_root: String, idx: int, submenu: String)

void

global_menu_set_item_tag(menu_root: String, idx: int, tag: Variant)

void

global_menu_set_item_text(menu_root: String, idx: int, text: String)

void

global_menu_set_item_tooltip(menu_root: String, idx: int, tooltip: String)

void

global_menu_set_popup_callbacks(menu_root: String, open_callback: Callable, close_callback: Callable)

bool

has_additional_outputs() const

bool

has_feature(feature: Feature) const

bool

has_hardware_keyboard() const

void

help_set_search_callbacks(search_callback: Callable, action_callback: Callable)

Vector2i

ime_get_selection() const

String

ime_get_text() const

bool

is_dark_mode() const

bool

is_dark_mode_supported() const

bool

is_touchscreen_available() const

bool

is_window_transparency_available() const

int

keyboard_get_current_layout() const

Key

keyboard_get_keycode_from_physical(keycode: Key) const

Key

keyboard_get_label_from_physical(keycode: Key) const

int

keyboard_get_layout_count() const

String

keyboard_get_layout_language(index: int) const

String

keyboard_get_layout_name(index: int) const

void

keyboard_set_current_layout(index: int)

BitField[MouseButtonMask]

mouse_get_button_state() const

MouseMode

mouse_get_mode() const

Vector2i

mouse_get_position() const

void

mouse_set_mode(mouse_mode: MouseMode)

void

process_events()

void

register_additional_output(object: Object)

int

screen_get_dpi(screen: int = -1) const

Image

screen_get_image(screen: int = -1) const

Image

screen_get_image_rect(rect: Rect2i) const

float

screen_get_max_scale() const

ScreenOrientation

screen_get_orientation(screen: int = -1) const

Color

screen_get_pixel(position: Vector2i) const

Vector2i

screen_get_position(screen: int = -1) const

float

screen_get_refresh_rate(screen: int = -1) const

float

screen_get_scale(screen: int = -1) const

Vector2i

screen_get_size(screen: int = -1) const

Rect2i

screen_get_usable_rect(screen: int = -1) const

bool

screen_is_kept_on() const

void

screen_set_keep_on(enable: bool)

void

screen_set_orientation(orientation: ScreenOrientation, screen: int = -1)

void

set_icon(image: Image)

void

set_native_icon(filename: String)

void

set_system_theme_change_callback(callable: Callable)

void

show_emoji_and_symbol_picker() const

Rect2

status_indicator_get_rect(id: int) const

void

status_indicator_set_callback(id: int, callback: Callable)

void

status_indicator_set_icon(id: int, icon: Texture2D)

void

status_indicator_set_menu(id: int, menu_rid: RID)

void

status_indicator_set_tooltip(id: int, tooltip: String)

String

tablet_get_current_driver() const

int

tablet_get_driver_count() const

String

tablet_get_driver_name(idx: int) const

void

tablet_set_current_driver(name: String)

Array[Dictionary]

tts_get_voices() const

PackedStringArray

tts_get_voices_for_language(language: String) const

bool

tts_is_paused() const

bool

tts_is_speaking() const

void

tts_pause()

void

tts_resume()

void

tts_set_utterance_callback(event: TTSUtteranceEvent, callable: Callable)

void

tts_speak(text: String, voice: String, volume: int = 50, pitch: float = 1.0, rate: float = 1.0, utterance_id: int = 0, interrupt: bool = false)

void

tts_stop()

void

unregister_additional_output(object: Object)

int

virtual_keyboard_get_height() const

void

virtual_keyboard_hide()

void

virtual_keyboard_show(existing_text: String, position: Rect2 = Rect2(0, 0, 0, 0), type: VirtualKeyboardType = 0, max_length: int = -1, cursor_start: int = -1, cursor_end: int = -1)

void

warp_mouse(position: Vector2i)

bool

window_can_draw(window_id: int = 0) const

int

window_get_active_popup() const

int

window_get_attached_instance_id(window_id: int = 0) const

int

window_get_current_screen(window_id: int = 0) const

bool

window_get_flag(flag: WindowFlags, window_id: int = 0) const

Vector2i

window_get_max_size(window_id: int = 0) const

Vector2i

window_get_min_size(window_id: int = 0) const

WindowMode

window_get_mode(window_id: int = 0) const

int

window_get_native_handle(handle_type: HandleType, window_id: int = 0) const

Rect2i

window_get_popup_safe_rect(window: int) const

Vector2i

window_get_position(window_id: int = 0) const

Vector2i

window_get_position_with_decorations(window_id: int = 0) const

Vector3i

window_get_safe_title_margins(window_id: int = 0) const

Vector2i

window_get_size(window_id: int = 0) const

Vector2i

window_get_size_with_decorations(window_id: int = 0) const

Vector2i

window_get_title_size(title: String, window_id: int = 0) const

VSyncMode

window_get_vsync_mode(window_id: int = 0) const

bool

window_is_focused(window_id: int = 0) const

bool

window_is_maximize_allowed(window_id: int = 0) const

bool

window_maximize_on_title_dbl_click() const

bool

window_minimize_on_title_dbl_click() const

void

window_move_to_foreground(window_id: int = 0)

void

window_request_attention(window_id: int = 0)

void

window_set_current_screen(screen: int, window_id: int = 0)

void

window_set_drop_files_callback(callback: Callable, window_id: int = 0)

void

window_set_exclusive(window_id: int, exclusive: bool)

void

window_set_flag(flag: WindowFlags, enabled: bool, window_id: int = 0)

void

window_set_ime_active(active: bool, window_id: int = 0)

void

window_set_ime_position(position: Vector2i, window_id: int = 0)

void

window_set_input_event_callback(callback: Callable, window_id: int = 0)

void

window_set_input_text_callback(callback: Callable, window_id: int = 0)

void

window_set_max_size(max_size: Vector2i, window_id: int = 0)

void

window_set_min_size(min_size: Vector2i, window_id: int = 0)

void

window_set_mode(mode: WindowMode, window_id: int = 0)

void

window_set_mouse_passthrough(region: PackedVector2Array, window_id: int = 0)

void

window_set_popup_safe_rect(window: int, rect: Rect2i)

void

window_set_position(position: Vector2i, window_id: int = 0)

void

window_set_rect_changed_callback(callback: Callable, window_id: int = 0)

void

window_set_size(size: Vector2i, window_id: int = 0)

void

window_set_title(title: String, window_id: int = 0)

void

window_set_transient(window_id: int, parent_window_id: int)

void

window_set_vsync_mode(vsync_mode: VSyncMode, window_id: int = 0)

void

window_set_window_buttons_offset(offset: Vector2i, window_id: int = 0)

void

window_set_window_event_callback(callback: Callable, window_id: int = 0)

void

window_start_drag(window_id: int = 0)

void

window_start_resize(edge: WindowResizeEdge, window_id: int = 0)


枚举

enum Feature: 🔗

Feature FEATURE_GLOBAL_MENU = 0

已弃用: 改用 NativeMenuPopupMenu

显示服务器支持全局菜单。这允许应用程序在操作系统的顶部栏中显示其菜单项。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/Wayland)、Android、Web

Feature FEATURE_MOUSE_WARP = 4

显示服务器支持扭曲鼠标坐标以将鼠标光标限制在一个区域内,但在到达其中一条边时循环。Windows、macOS、Linux(X11/Wayland)

Feature FEATURE_CLIPBOARD = 5

显示服务器支持设置和获取剪贴板数据。另见FEATURE_CLIPBOARD_PRIMARYWindows、macOS、Linux(X11/Wayland)、Android、iOS、Web

Feature FEATURE_VIRTUAL_KEYBOARD = 6

显示服务器支持在没有物理键盘的情况下请求输入文本时弹出虚拟键盘。Android、iOS、Web

Feature FEATURE_CURSOR_SHAPE = 7

显示服务器支持将鼠标光标形状设置为不同于默认值。Windows、macOS、Linux(X11/Wayland)、Android、Web

Feature FEATURE_CUSTOM_CURSOR_SHAPE = 8

显示服务器支持将鼠标光标形状设置为自定义图像。Windows、macOS、Linux(X11/Wayland)、Web

Feature FEATURE_NATIVE_DIALOG = 9

显示服务器支持使用操作系统的本机外观生成文本对话框。参见dialog_show()Windows, macOS

Feature FEATURE_IME = 10

显示服务器支持输入法编辑器,常用于输入中/日/韩文本。这是由操作系统处理的,而不是由i3D处理的。Windows、macOS、Linux(X11)

Feature FEATURE_WINDOW_TRANSPARENCY = 11

显示服务器支持窗口可以使用每像素透明度使其后面的窗口部分或完全可见。Windows、macOS、Linux(X11/Wayland)

Feature FEATURE_HIDPI = 12

显示服务器支持查询操作系统的显示比例因子。这允许可靠的自动hiDPI显示检测,而不是根据屏幕分辨率和报告的显示DPI进行猜测(由于显示器EDID损坏,这可能不可靠)。Windows、Linux(Wayland)、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

显示服务器支持V-Sync状态可以从默认更改(强制启用不支持此功能的平台)。Windows、macOS、Linux(X11/Wayland)

Feature FEATURE_CLIPBOARD_PRIMARY = 18

显示服务器支持可以使用主剪贴板。这是一个不同于FEATURE_CLIPBOARD的剪贴板。Linux(X11/Wayland)

Feature FEATURE_TEXT_TO_SPEECH = 19

显示服务器支持语音合成。请参阅tts_*方法。Windows, macOS,Linux(X11/Wayland),Android,iOS,Web

Feature FEATURE_EXTEND_TO_TITLE = 20

显示服务器支持将窗口内容扩展到标题。参见WINDOW_FLAG_EXTEND_TO_TITLEmacOS

Feature FEATURE_SCREEN_CAPTURE = 21

显示服务器支持读取屏幕像素。参见screen_get_pixel()

Feature FEATURE_STATUS_INDICATOR = 22

显示服务器支持应用程序状态指示器。

Feature FEATURE_NATIVE_HELP = 23

显示服务器支持本机帮助系统搜索回调。参见help_set_search_callbacks()

Feature FEATURE_NATIVE_DIALOG_INPUT = 24

显示服务器支持使用操作系统的本机外观生成文本输入对话框。参见dialog_input_text()Windows, macOS

Feature FEATURE_NATIVE_DIALOG_FILE = 25

显示服务器支持生成对话框,用于使用操作系统的本机外观选择文件或目录。参见file_dialog_show()Windows、macOS、Linux(X11/Wayland)、Android

Feature FEATURE_NATIVE_DIALOG_FILE_EXTRA = 26

显示服务器支持FEATURE_NATIVE_DIALOG_FILE的所有功能,增加了选项功能和对res://user://路径的本机对话框文件访问。参见file_dialog_show()file_dialog_with_options_show()Windows、macOS、Linux(X11/Wayland)

Feature FEATURE_WINDOW_DRAG = 27

显示服务器支持按需启动窗口拖动和调整大小操作。参见window_start_drag()window_start_resize()

Feature FEATURE_SCREEN_EXCLUDE_FROM_CAPTURE = 28

显示服务器支持WINDOW_FLAG_EXCLUDE_FROM_CAPTURE窗口标志。

Feature FEATURE_WINDOW_EMBEDDING = 29

显示服务器支持从另一个进程嵌入窗口。Windows,Linux(X11)

Feature FEATURE_NATIVE_DIALOG_FILE_MIME = 30

本机文件选择对话框支持MIME类型作为过滤器。

Feature FEATURE_EMOJI_AND_SYMBOL_PICKER = 31

显示服务器支持系统表情符号和符号选择器。Windows、macOS


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

将鼠标光标限制在应用窗口中,并使其隐藏。

MouseMode MOUSE_MODE_MAX = 5

MouseMode的最大值。


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

箭头光标形状。这是不指向任何覆盖鼠标光标的内容时的默认值,例如LineEditTextEdit

CursorShape CURSOR_IBEAM = 1

I光束光标形状。默认情况下,将鼠标悬停在接受文本输入的控件(例如LineEditTextEdit)上时使用此选项。

CursorShape CURSOR_POINTING_HAND = 2

指向手光标形状。默认情况下,将LinkButtonRichTextLabel中的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

垂直拆分光标。当悬停在Control上时,会显示这一点,该控件具有可以使用鼠标垂直调整大小的拆分,例如VSplitContainer。在某些光标主题上,此光标可能与CURSOR_VSIZE具有相同的外观。

CursorShape CURSOR_HSPLIT = 15

水平分割光标。这在悬停Control时显示,该控件具有可以使用鼠标水平调整大小的分割,例如HSplitContainer。在某些光标主题上,此光标可能具有与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

具有完全多窗口支持的全屏模式。

全屏窗口覆盖屏幕的整个显示区域,没有装饰。显示器的视频模式没有改变。

在Android上:这启用了沉浸式模式。

在Windows上:多窗口全屏模式具有1px的ProjectSettings.rendering/environment/defaults/default_clear_color颜色边框。

在macOS上:一个新的桌面用于显示正在运行的项目。

注意:无论平台如何,启用全屏都会改变窗口大小以匹配显示器的大小,因此,请确保您的项目在启用全屏模式时支持多种分辨率。

WindowMode WINDOW_MODE_EXCLUSIVE_FULLSCREEN = 4

单窗口全屏模式。这种模式开销较小,但一次只能在给定屏幕上打开一个窗口(打开子窗口或应用程序切换将触发全屏转换)。

全屏窗口覆盖屏幕的整个显示区域,没有边框或装饰。显示器的视频模式不会改变。

在Android上:这启用了沉浸式模式。

在Windows上:根据视频驱动程序,全屏转换可能会导致屏幕变黑片刻。

在macOS上:一个新的桌面用于显示正在运行的项目。独家全屏模式可防止当鼠标指针悬停在屏幕边缘时显示Dock和Menu。

在Linux(X11):独家全屏模式绕过合成器。

关于Linux(Wayland):等价于WINDOW_MODE_FULLSCREEN

注意:无论平台如何,启用全屏都会改变窗口大小以匹配显示器的大小,因此,请确保您的项目在启用全屏模式时支持多种分辨率。


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

窗口背景可以是透明的。

注意:如果is_window_transparency_available()返回false,则此标志无效。

注意:透明度支持在Linux(X11/Wayland)、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_SHARP_CORNERS = 8

窗口样式被覆盖,强制锐角。

注意:此标志仅在Windows(11)上实现。

WindowFlags WINDOW_FLAG_EXCLUDE_FROM_CAPTURE = 9

Windows从screen_get_image()screen_get_image_rect()screen_get_pixel()截取的屏幕截图中排除。

注意:此标志在macOS和Windows上实现。

注意:设置此标志将不会阻止其他应用程序捕获图像,不应将其用作安全措施。

WindowFlags WINDOW_FLAG_MAX = 10

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 WindowResizeEdge: 🔗

WindowResizeEdge WINDOW_EDGE_TOP_LEFT = 0

窗口的左上角边缘。

WindowResizeEdge WINDOW_EDGE_TOP = 1

窗口的顶部边缘。

WindowResizeEdge WINDOW_EDGE_TOP_RIGHT = 2

窗口的右上角边缘。

WindowResizeEdge WINDOW_EDGE_LEFT = 3

窗口的左边缘。

WindowResizeEdge WINDOW_EDGE_RIGHT = 4

窗户的右边缘。

WindowResizeEdge WINDOW_EDGE_BOTTOM_LEFT = 5

窗口的左下角边缘。

WindowResizeEdge WINDOW_EDGE_BOTTOM = 6

窗口的底部边缘。

WindowResizeEdge WINDOW_EDGE_BOTTOM_RIGHT = 7

窗口的右下角边缘。

WindowResizeEdge WINDOW_EDGE_MAX = 8

表示WindowResizeEdge枚举的大小。


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*用于显示。

-Linux(Wayland):wl_display用于显示。

-Android:用于显示器的EGLDisplay

HandleType WINDOW_HANDLE = 1

窗柄:

-Windows:窗口的HWND

-Linux(X11):X11::窗口*为窗口。

-Linux(Wayland):窗口的wl_surface

-macOS:NSWindow*用于窗口。

-iOS:UIViewController*用于视图控制器。

-Android:活动的jObject

HandleType WINDOW_VIEW = 2

窗口视图:

-Windows:窗口的HDC(仅使用兼容性渲染器)。

-macOS:NSView*用于窗口主视图。

-iOS:UIView*用于窗口主视图。

HandleType OPENGL_CONTEXT = 3

OpenGL上下文(仅使用兼容性渲染器):

-Windows:HGLRC用于窗口(本机GL),或EGLContext用于窗口(ANGLE)。

-Linux(X11):GLXContext*用于窗口。

-Linux(Wayland):EGLContext用于窗口。

-macOS:NSOpenGLContext*用于窗口(本机GL),或EGLContext用于窗口(ANGLE)。

-Android:窗口的EGLContext

HandleType EGL_DISPLAY = 4

-Windows:EGLDisplay用于窗口(ANGLE)。

-macOS:EGLDisplay用于窗口(角度)。

-Linux(Wayland):EGLDisplay用于窗口。

HandleType EGL_CONFIG = 5

-Windows:窗口(ANGLE)的EGLConfig

-macOS:窗口(角度)的EGLConfig

-Linux(Wayland):窗口的EGLConfig


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 🔗

表示包含鼠标指针的屏幕。

注意:在Linux(Wayland)上,此常量始终表示索引0处的屏幕。

SCREEN_WITH_KEYBOARD_FOCUS = -3 🔗

表示包含具有键盘焦点的窗口的屏幕。

注意:在Linux(Wayland)上,此常量始终表示索引0处的屏幕。

SCREEN_PRIMARY = -2 🔗

表示主屏幕。

注意:在Linux(Wayland)上,此常量始终表示索引0处的屏幕。

SCREEN_OF_MAIN_WINDOW = -1 🔗

表示主窗口所在的屏幕。这通常是允许指定多个屏幕之一的函数中的默认值。

注意:在Linux(Wayland)上,此常量始终表示索引0处的屏幕。

MAIN_WINDOW_ID = 0 🔗

引擎生成的主窗口的ID,可以传递给期望window_id的方法。

INVALID_WINDOW_ID = -1 🔗

引用不存在窗口的ID。如果没有窗口与请求的结果匹配,这将由某些DisplayServer方法返回。

INVALID_INDICATOR_ID = -1 🔗

引用不存在的应用程序状态指示符的ID。


方法说明

void beep() const 🔗

如果可能,从操作系统播放哔哔声。因为它来自操作系统,所以即使应用程序静音,哔哔声也会被听到。它也可能被用户禁用整个操作系统。

注意:此方法在macOS、Linux(X11/Wayland)和Windows上实现。


String clipboard_get() const 🔗

如果可能,将用户的剪贴板作为字符串返回。


Image clipboard_get_image() const 🔗

如果可能,将用户的剪贴板作为图像返回。

注意:此方法使用复制的像素数据,例如来自图像编辑软件或网络浏览器,而不是从文件资源管理器复制的图像文件。


String clipboard_get_primary() const 🔗

如果可能,将用户的剪贴板作为字符串返回。这是用户在任何应用程序中选择文本时设置的剪贴板,而不是在按下Ctrl+C时设置的剪贴板。然后可以通过在任何支持主剪贴板机制的应用程序中单击鼠标中键粘贴剪贴板数据。

注意:此方法仅在Linux(X11/Wayland)上实现。


bool clipboard_has() const 🔗

如果用户的剪贴板上有文本内容,则返回true


bool clipboard_has_image() const 🔗

如果用户的剪贴板上有图像内容,则返回true


void clipboard_set(clipboard: String) 🔗

将用户的剪贴板内容设置为给定字符串。


void clipboard_set_primary(clipboard_primary: String) 🔗

将用户的剪贴板内容设置为给定字符串。这是用户在任何应用程序中选择文本时设置的剪贴板,而不是在按下Ctrl+C时设置的剪贴板。然后可以通过在任何支持主剪贴板机制的应用程序中单击鼠标中键粘贴剪贴板数据。

注意:此方法仅在Linux(X11/Wayland)上实现。


int create_status_indicator(icon: Texture2D, tooltip: String, callback: Callable) 🔗

使用指定的图标、工具提示和激活回调创建新的应用程序状态指示器。

callback应该有两个参数:按下的鼠标按钮(MouseButton常量之一)和屏幕坐标中的单击位置(Vector2i)。


CursorShape cursor_get_shape() const 🔗

返回cursor_set_shape()设置的默认鼠标光标形状。


void cursor_set_custom_image(cursor: Resource, shape: CursorShape = 0, hotspot: Vector2 = Vector2(0, 0)) 🔗

为给定的shape设置自定义鼠标光标图像。这意味着用户的操作系统和鼠标光标主题将不再影响鼠标光标的外观。

cursor可以是Texture2DImage,并且不应大于256×256以正确显示。可选地,可以设置hotspot以偏移图像相对于点击点的位置。默认情况下,hotspot设置为图像的左上角。另见cursor_set_shape()


void cursor_set_shape(shape: CursorShape) 🔗

设置默认鼠标光标形状。光标的外观将根据用户的操作系统和鼠标光标主题而有所不同。另请参见cursor_get_shape()cursor_set_custom_image()


void delete_status_indicator(id: int) 🔗

删除应用程序状态指示器。


Error dialog_input_text(title: String, description: String, existing_text: String, callback: Callable) 🔗

显示使用操作系统本机外观的文本输入对话框。callback应接受包含文本字段内容的单个String参数。

注意:如果显示服务器具有FEATURE_NATIVE_DIALOG_INPUT功能,则实现此方法。支持的平台包括macOS、Windows和Android。


Error dialog_show(title: String, description: String, buttons: PackedStringArray, callback: Callable) 🔗

显示使用操作系统本机外观的文本对话框。callback应接受与按下按钮的索引对应的单个int参数。

注意:如果显示服务器具有FEATURE_NATIVE_DIALOG功能,则实现此方法。支持的平台包括macOS、Windows和Android。


void enable_for_stealing_focus(process_id: int) 🔗

允许process_idPID从此窗口窃取焦点。换句话说,这会禁用操作系统对指定PID的焦点窃取保护。

注意:此方法仅在Windows上实现。


Error file_dialog_show(title: String, current_directory: String, filename: String, show_hidden: bool, mode: FileDialogMode, filters: PackedStringArray, callback: Callable) 🔗

显示用于选择文件系统中的文件或目录的操作系统本机对话框。

filters数组中的每个过滤器字符串应该这样格式化:*. png,*.jpg,*.jpeg;Image Files;image/png,image/jpeg。过滤器的描述文本是可选的,可以省略。建议同时设置文件扩展名和MIME类型。另请参阅FileDialog.filters

回调有以下参数:status: bool,selected_paths:PackedStringArray,selected_filter_index:int.在Android上,回调参数selected_filter_index始终为零。

注意:如果显示服务器具有FEATURE_NATIVE_DIALOG_FILE功能,则实现此方法。支持的平台包括Linux(X11/Wayland)、Windows、macOS和Android。

注意:current_directory可能会被忽略。

注意:嵌入式文件对话框和Windows文件对话框仅支持文件扩展名,而Android、Linux和macOS文件对话框也支持MIME类型。

注意:在Android和Linux上,show_hidden被忽略。

注意:在Android和macOS上,本机文件对话框没有标题。

注意:在macOS上,沙盒应用程序将保存安全范围的书签,以保留对多个会话中打开的文件夹的访问权限。使用OS.get_granted_permissions()获取已保存书签的列表。


Error file_dialog_with_options_show(title: String, current_directory: String, root: String, filename: String, show_hidden: bool, mode: FileDialogMode, filters: PackedStringArray, options: Array[Dictionary], callback: Callable) 🔗

显示操作系统本机对话框,用于选择文件系统中的文件或目录,并带有其他用户可选选项。

filters数组中的每个过滤器字符串应该这样格式化:*. png,*.jpg,*.jpeg;Image Files;image/png,image/jpeg。过滤器的描述文本是可选的,可以省略。建议同时设置文件扩展名和MIME类型。另请参阅FileDialog.filters

options是具有以下键的Dictionary数组:

-"name"-选项的名称String

-"value"-PackedStringArray的值。如果为空,则使用布尔选项(复选框)。

-"default"-默认选定选项索引(int)或默认布尔值(bool)。

回调有以下参数:status: bool,selected_paths:PackedStringArray,selected_filter_index:int,selected_option:Dicword

注意:如果显示服务器具有FEATURE_NATIVE_DIALOG_FILE_EXTRA特性,则实现此方法。支持的平台包括Linux(X11/Wayland)、Windows和macOS。

注意:current_directory可能会被忽略。

注意:嵌入式文件对话框和Windows文件对话框仅支持文件扩展名,而Android、Linux和macOS文件对话框也支持MIME类型。

注意:在Linux(X11),show_hidden被忽略。

注意:在macOS上,本机文件对话框没有标题。

注意:在macOS上,沙盒应用程序将保存安全范围的书签,以保留对多个会话中打开的文件夹的访问权限。使用OS.get_granted_permissions()获取已保存书签的列表。


void force_process_and_drop_events() 🔗

强制窗口管理器处理,同时忽略所有InputEvent。另请参见process_events()

注意:此方法在Windows和macOS上实现。


Color get_accent_color() const 🔗

返回OS主题重音颜色。如果重音颜色未知,则返回Color(0,0,0,0)

注意:此方法在macOS、Windows和Android上实现。


Color get_base_color() const 🔗

返回OS主题底色(默认控件背景)。如果底色未知,则返回Color(0,0,0,0)

注意:此方法在macOS、Windows和Android上实现。


Array[Rect2] get_display_cutouts() const 🔗

返回Rect2Array,每个数组都是显示切口或缺口的边界矩形。这些是摄像机和传感器使用的边到边屏幕上的非功能区域。如果设备没有切口,则返回一个空数组。另请参见get_display_safe_area()

注意:目前仅在Android上实现。其他平台将返回一个空数组,即使它们确实有显示切口或缺口。


Rect2i get_display_safe_area() const 🔗

返回应呈现交互式控件的显示的未被遮挡区域。另请参见get_display_cutouts()

注意:目前仅在Android和iOS上实现。在其他平台上,screen_get_usable_rect(SCREEN_OF_MAIN_WINDOW)将作为后备返回。另见screen_get_usable_rect()


int get_keyboard_focus_screen() const 🔗

返回包含具有键盘焦点的窗口的屏幕索引,如果没有焦点窗口,则返回主屏幕的索引。


String get_name() const 🔗

返回当前使用的DisplayServer的名称。大多数操作系统只有一个DisplayServer,但Linux可以访问多个DisplayServer(目前是X11和Wayland)。

内置显示服务器的名称是WindowsmacOSX11(Linux)、Wayland(Linux)、AndroidiOSweb(HTML5)和Headless(当使用--head less命令行参数启动时)。


int get_primary_screen() const 🔗

返回主屏幕的索引。


int get_screen_count() const 🔗

返回可用的显示数量。


int get_screen_from_rect(rect: Rect2) const 🔗

返回与给定矩形重叠最多的屏幕索引。如果矩形不与任何屏幕重叠或没有区域,则返回-1


bool get_swap_cancel_ok() 🔗

如果OK取消按钮的位置在对话框中交换,则返回true。这在Windows上默认启用以遵循界面约定,并通过更改ProjectSettings.gui/common/swap_cancel_ok进行切换。

注意:这不会影响本机对话框,例如由dialog_show()生成的对话框。


int get_window_at_screen_position(position: Vector2i) const 🔗

返回指定屏幕position(以像素为单位)窗口的ID。在多显示器设置中,屏幕位置相对于虚拟桌面区域。在屏幕分辨率或方向不同的多显示器设置中,原点可能位于任何显示器之外,例如:

* (0, 0)        +-------+
                |       |
+-------------+ |       |
|             | |       |
|             | |       |
+-------------+ +-------+

PackedInt32Array get_window_list() const 🔗

返回属于此进程的i3D窗口ID列表。

注意:本机对话框不包含在此列表中。


int global_menu_add_check_item(menu_root: String, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

已弃用: 改用 NativeMenuPopupMenu

在全局菜单中添加一个新的可选项,文本为label,ID为menu_root

返回插入项的索引,但不保证与index的值相同。

可以选择定义一个accelerator,这是一个键盘快捷键,即使菜单未打开,也可以通过按下该快捷键来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用位或运算符,如KEY_MASK_CTRL | KEY_ACtrl + A)。

注意: callbackkey_callback可调用函数需要接受一个Variant参数,该参数传递给可调用函数的值将是传递给tag的值。

注意:此方法仅在macOS上实现。

支持的系统菜单ID:

"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
"_window" - Window menu (macOS, custom items added after "Bring All to Front").
"_help" - Help menu (macOS).

int global_menu_add_icon_check_item(menu_root: String, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

已弃用: 改用 NativeMenuPopupMenu

在全局菜单中添加一个新的可选项,文本为label,图标为icon,ID为menu_root

返回插入项的索引,但不保证与index的值相同。

可以选择定义一个accelerator,这是一个键盘快捷键,即使菜单未打开,也可以通过按下该快捷键来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用位或运算符,如KEY_MASK_CTRL | KEY_ACtrl + A)。

注意: callbackkey_callback可调用函数需要接受一个Variant参数,该参数传递给可调用函数的值将是传递给tag的值。

注意:此方法仅在macOS上实现。

支持的系统菜单ID:

"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
"_window" - Window menu (macOS, custom items added after "Bring All to Front").
"_help" - Help menu (macOS).

int global_menu_add_icon_item(menu_root: String, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

已弃用: 改用 NativeMenuPopupMenu

在全局菜单中添加一个新的项,文本为label,图标为icon,ID为menu_root

返回插入项的索引,但不保证与index的值相同。

可以选择定义一个accelerator,这是一个键盘快捷键,即使菜单未打开,也可以通过按下该快捷键来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用位或运算符,如KEY_MASK_CTRL | KEY_ACtrl + A)。

注意: callbackkey_callback可调用函数需要接受一个Variant参数,该参数传递给可调用函数的值将是传递给tag的值。

注意:此方法仅在macOS上实现。

支持的系统菜单ID:

"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
"_window" - Window menu (macOS, custom items added after "Bring All to Front").
"_help" - Help menu (macOS).

int global_menu_add_icon_radio_check_item(menu_root: String, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

已弃用: 改用 NativeMenuPopupMenu

在全局菜单中添加一个新的单选项,文本为label,图标为icon,ID为menu_root

返回插入项的索引,但不保证与index的值相同。

可以选择定义一个accelerator,这是一个键盘快捷键,即使菜单未打开,也可以通过按下该快捷键来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用位或运算符,如KEY_MASK_CTRL | KEY_ACtrl + A)。

注意:单选项只显示一个选择标记,但没有任何内置检查行为,必须手动检查/取消检查。有关如何控制它的更多信息,请参阅 global_menu_set_item_checked()

注意: callbackkey_callback可调用函数需要接受一个Variant参数,该参数传递给可调用函数的值将是传递给tag的值。

注意:此方法仅在macOS上实现。

支持的系统菜单ID:

"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
"_window" - Window menu (macOS, custom items added after "Bring All to Front").
"_help" - Help menu (macOS).

int global_menu_add_item(menu_root: String, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

已弃用: 改用 NativeMenuPopupMenu

在全局菜单中添加一个新的项,文本为label,ID为menu_root

返回插入项的索引,但不保证与index的值相同。

可以选择定义一个accelerator,这是一个键盘快捷键,即使菜单未打开,也可以通过按下该快捷键来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用位或运算符,如KEY_MASK_CTRL | KEY_ACtrl + A)。

注意: callbackkey_callback可调用函数需要接受一个Variant参数,该参数传递给可调用函数的值将是传递给tag的值。

注意:此方法仅在macOS上实现。

支持的系统菜单ID:

"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
"_window" - Window menu (macOS, custom items added after "Bring All to Front").
"_help" - Help menu (macOS).

int global_menu_add_multistate_item(menu_root: String, label: String, max_states: int, default_state: int, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

已弃用: 改用 NativeMenuPopupMenu

在全局菜单中添加一个新的项,文本为label,ID为menu_root

与普通的二元项不同,多状态项可以有两个以上的状态,这由max_states定义。每次点击或激活该项时,状态会增加一。默认值由default_state定义。

返回插入项的索引,但不保证与index的值相同。

可以选择定义一个accelerator,这是一个键盘快捷键,即使菜单未打开,也可以通过按下该快捷键来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用位或运算符,如KEY_MASK_CTRL | KEY_ACtrl + A)。

注意: callbackkey_callback可调用函数需要接受一个Variant参数,该参数传递给可调用函数的值将是传递给tag的值。

注意:此方法仅在macOS上实现。

支持的系统菜单ID:

"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
"_window" - Window menu (macOS, custom items added after "Bring All to Front").
"_help" - Help menu (macOS).

int global_menu_add_radio_check_item(menu_root: String, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

已弃用: 改用 NativeMenuPopupMenu

在全局菜单中添加一个新的单选项,文本为label,ID为menu_root

返回插入项的索引,但不保证与index的值相同。

可以选择定义一个accelerator,这是一个键盘快捷键,即使菜单未打开,也可以通过按下该快捷键来触发菜单按钮。accelerator通常是KeyModifierMaskKey的组合,使用位或运算符,如KEY_MASK_CTRL | KEY_ACtrl + A)。

注意:单选项只显示一个选择标记,但没有任何内置检查行为,必须手动检查/取消检查。有关如何控制它的更多信息,请参阅 global_menu_set_item_checked()

注意: callbackkey_callback可调用函数需要接受一个Variant参数,该参数传递给可调用函数的值将是传递给tag的值。

注意:此方法仅在macOS上实现。

支持的系统菜单ID:

"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
"_window" - Window menu (macOS, custom items added after "Bring All to Front").
"_help" - Help menu (macOS).

int global_menu_add_separator(menu_root: String, index: int = -1) 🔗

已弃用: 改用 NativeMenuPopupMenu

在全局菜单中添加项目之间的分隔符,ID为menu_root。分隔符也占用一个索引。

返回插入项的索引,但不保证与index的值相同。

注意:此方法仅在macOS上实现。

支持的系统菜单ID:

"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
"_window" - Window menu (macOS, custom items added after "Bring All to Front").
"_help" - Help menu (macOS).

int global_menu_add_submenu_item(menu_root: String, label: String, submenu: String, index: int = -1) 🔗

已弃用: 改用 NativeMenuPopupMenu

添加一个项作为全局菜单menu_root的子菜单。submenu参数是全局菜单根的ID,点击该项时会显示该菜单。

返回插入项的索引,但不保证与index的值相同。

注意:此方法仅在macOS上实现。

支持的系统菜单ID:

"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
"_window" - Window menu (macOS, custom items added after "Bring All to Front").
"_help" - Help menu (macOS).

void global_menu_clear(menu_root: String) 🔗

已弃用: 改用 NativeMenuPopupMenu

删除全局菜单中 ID 为 menu_root 的所有项目。

注意:此方法仅在macOS上实现。

支持的系统菜单ID:

"_main" - Main menu (macOS).
"_dock" - Dock popup menu (macOS).
"_apple" - Apple menu (macOS, custom items added before "Services").
"_window" - Window menu (macOS, custom items added after "Bring All to Front").
"_help" - Help menu (macOS).

Key global_menu_get_item_accelerator(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回索引idx处项目的加速器。加速器是激活项目的键的特殊组合,无论哪个控件被聚焦。

注意:此方法仅在macOS上实现。


Callable global_menu_get_item_callback(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回indexidx处项目的回调。

注意:此方法仅在macOS上实现。


int global_menu_get_item_count(menu_root: String) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回全局菜单中IDmenu_root的项目数。

注意:此方法仅在macOS上实现。


Texture2D global_menu_get_item_icon(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回索引idx处项目的图标。

注意:此方法仅在macOS上实现。


int global_menu_get_item_indentation_level(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回给定idx处项目的水平偏移量。

注意:此方法仅在macOS上实现。


int global_menu_get_item_index_from_tag(menu_root: String, tag: Variant) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回具有指定tag的项目的索引。索引由引擎自动分配给每个项目,不能手动设置。

注意:此方法仅在macOS上实现。


int global_menu_get_item_index_from_text(menu_root: String, text: String) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回具有指定text的项目的索引。索引由引擎自动分配给每个项目,不能手动设置。

注意:此方法仅在macOS上实现。


Callable global_menu_get_item_key_callback(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回索引idx处项目加速器的回调。

注意:此方法仅在macOS上实现。


int global_menu_get_item_max_states(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回多状态项的状态数。有关详细信息,请参见global_menu_add_multistate_item()

注意:此方法仅在macOS上实现。


int global_menu_get_item_state(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回多状态项的状态。有关详细信息,请参见global_menu_add_multistate_item()

注意:此方法仅在macOS上实现。


String global_menu_get_item_submenu(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回索引idx处项目的子菜单ID。有关如何添加子菜单的更多信息,请参阅global_menu_add_submenu_item()

注意:此方法仅在macOS上实现。


Variant global_menu_get_item_tag(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回指定项的元数据,可以是任何类型。您可以使用global_menu_set_item_tag()进行设置,它提供了一种将上下文数据分配给项的简单方法。

注意:此方法仅在macOS上实现。


String global_menu_get_item_text(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回索引idx处项目的文本。

注意:此方法仅在macOS上实现。


String global_menu_get_item_tooltip(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回与指定索引idx关联的工具提示。

注意:此方法仅在macOS上实现。


Dictionary global_menu_get_system_menu_roots() const 🔗

已弃用: 改用 NativeMenuPopupMenu

返回支持的系统菜单ID和名称的字典。

注意:此方法仅在macOS上实现。


bool global_menu_is_item_checkable(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

如果索引idx处的项目以某种方式可检查,即如果它有复选框或单选按钮,则返回true

注意:此方法仅在macOS上实现。


bool global_menu_is_item_checked(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

如果选中索引idx处的项目,则返回true

注意:此方法仅在macOS上实现。


bool global_menu_is_item_disabled(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

如果索引idx处的项目被禁用,则返回true。当它被禁用时,它无法被选中,或者它的操作被调用。

有关如何禁用项目的更多信息,请参见global_menu_set_item_disabled()

注意:此方法仅在macOS上实现。


bool global_menu_is_item_hidden(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

如果索引idx处的项目被隐藏,则返回true

有关如何隐藏项目的更多信息,请参见global_menu_set_item_hidden()

注意:此方法仅在macOS上实现。


bool global_menu_is_item_radio_checkable(menu_root: String, idx: int) const 🔗

已弃用: 改用 NativeMenuPopupMenu

如果索引idx处的项目具有单选按钮样式的可检查性,则返回true

注意:这纯粹是装饰性的;您必须添加检查/取消检查无线电组中的项目的逻辑。

注意:此方法仅在macOS上实现。


void global_menu_remove_item(menu_root: String, idx: int) 🔗

已弃用: 改用 NativeMenuPopupMenu

从全局菜单menu_root中删除indexidx处的项目。

注意:删除项目后的项目索引将移位1。

注意:此方法仅在macOS上实现。


void global_menu_set_item_accelerator(menu_root: String, idx: int, keycode: Key) 🔗

已弃用: 改用 NativeMenuPopupMenu

keycode可以是单个Key,也可以是KeyModifierMasks和Keys的组合,使用按位或,例如KEY_MASK_CTRL|KEY_ACtrl+A)。

注意:此方法仅在macOS上实现。


void global_menu_set_item_callback(menu_root: String, idx: int, callback: Callable) 🔗

已弃用: 改用 NativeMenuPopupMenu

在indexidx处设置项目的回调。按下项目时会发出回调。

注意:callbackCallable需要只接受一个Variant参数,传递给Callable的参数将是创建菜单项时传递给tag参数的值。

注意:此方法仅在macOS上实现。


void global_menu_set_item_checkable(menu_root: String, idx: int, checkable: bool) 🔗

已弃用: 改用 NativeMenuPopupMenu

设置indexidx处的项目是否有复选框。如果false,则将项目的类型设置为纯文本。

注意:此方法仅在macOS上实现。


void global_menu_set_item_checked(menu_root: String, idx: int, checked: bool) 🔗

已弃用: 改用 NativeMenuPopupMenu

在indexidx处设置项目的检查状态。

注意:此方法仅在macOS上实现。


void global_menu_set_item_disabled(menu_root: String, idx: int, disabled: bool) 🔗

已弃用: 改用 NativeMenuPopupMenu

启用/禁用indexidx处的项目。禁用时,无法选择它,也无法调用它的操作。

注意:此方法仅在macOS上实现。


void global_menu_set_item_hidden(menu_root: String, idx: int, hidden: bool) 🔗

已弃用: 改用 NativeMenuPopupMenu

隐藏/显示索引idx处的项目。当它被隐藏时,项目不会出现在菜单中,并且无法调用其操作。

注意:此方法仅在macOS上实现。


void global_menu_set_item_hover_callbacks(menu_root: String, idx: int, callback: Callable) 🔗

已弃用: 改用 NativeMenuPopupMenu

在indexidx处设置项目的回调。当项目悬停时发出回调。

注意:callbackCallable需要只接受一个Variant参数,传递给Callable的参数将是创建菜单项时传递给tag参数的值。

注意:此方法仅在macOS上实现。


void global_menu_set_item_icon(menu_root: String, idx: int, icon: Texture2D) 🔗

已弃用: 改用 NativeMenuPopupMenu

替换指定idxTexture2D图标。

注意:此方法仅在macOS上实现。

注意:macOS_dock菜单项不支持此方法。


void global_menu_set_item_indentation_level(menu_root: String, idx: int, level: int) 🔗

已弃用: 改用 NativeMenuPopupMenu

设置给定idx处项目的水平偏移量。

注意:此方法仅在macOS上实现。


void global_menu_set_item_key_callback(menu_root: String, idx: int, key_callback: Callable) 🔗

已弃用: 改用 NativeMenuPopupMenu

在indexidx处设置项目的回调。当其加速器被激活时发出回调。

注意:key_callbackCallable需要只接受一个Variant参数,传递给Callable的参数将是创建菜单项时传递给tag参数的值。

注意:此方法仅在macOS上实现。


void global_menu_set_item_max_states(menu_root: String, idx: int, max_states: int) 🔗

已弃用: 改用 NativeMenuPopupMenu

设置多状态项的状态数。有关详细信息,请参见global_menu_add_multistate_item()

注意:此方法仅在macOS上实现。


void global_menu_set_item_radio_checkable(menu_root: String, idx: int, checkable: bool) 🔗

已弃用: 改用 NativeMenuPopupMenu

将指定索引idx处的项目类型设置为单选按钮。如果false,则将项目类型设置为纯文本。

注意:这纯粹是装饰性的;您必须添加检查/取消检查无线电组中的项目的逻辑。

注意:此方法仅在macOS上实现。


void global_menu_set_item_state(menu_root: String, idx: int, state: int) 🔗

已弃用: 改用 NativeMenuPopupMenu

设置多状态项的状态。有关详细信息,请参见global_menu_add_multistate_item()

注意:此方法仅在macOS上实现。


void global_menu_set_item_submenu(menu_root: String, idx: int, submenu: String) 🔗

已弃用: 改用 NativeMenuPopupMenu

在indexidx处设置项目的子菜单。子菜单是单击项目时将显示的全局菜单根的ID。

注意:此方法仅在macOS上实现。


void global_menu_set_item_tag(menu_root: String, idx: int, tag: Variant) 🔗

已弃用: 改用 NativeMenuPopupMenu

设置项目的元数据,可以是任何类型。您可以稍后使用global_menu_get_item_tag()获取它,它提供了一种将上下文数据分配给项目的简单方法。

注意:此方法仅在macOS上实现。


void global_menu_set_item_text(menu_root: String, idx: int, text: String) 🔗

已弃用: 改用 NativeMenuPopupMenu

在indexidx处设置项目的文本。

注意:此方法仅在macOS上实现。


void global_menu_set_item_tooltip(menu_root: String, idx: int, tooltip: String) 🔗

已弃用: 改用 NativeMenuPopupMenu

在指定索引idx处设置项目的String工具提示。

注意:此方法仅在macOS上实现。


void global_menu_set_popup_callbacks(menu_root: String, open_callback: Callable, close_callback: Callable) 🔗

已弃用: 改用 NativeMenuPopupMenu

注册可调用对象以在菜单分别即将显示或关闭时发出。回调方法应该有零参数。


bool has_additional_outputs() const 🔗

如果通过register_additional_output()注册了任何附加输出,则返回true


bool has_feature(feature: Feature) const 🔗

如果当前DisplayServer支持指定的feature,则返回true,否则返回false


bool has_hardware_keyboard() const 🔗

如果连接了硬件键盘,则返回true

注意:此方法在Android和iOS上实现,在其他平台上此方法总是返回true


void help_set_search_callbacks(search_callback: Callable, action_callback: Callable) 🔗

设置本机帮助系统搜索回调。

search_callback有以下参数:Stringsearch_string,intresult_limit并返回一个Dictionary与"key,display name"对的搜索结果。当用户在帮助菜单中输入搜索词时调用。

action_callback有以下参数:String key。当用户在帮助菜单中选择搜索结果时调用。

注意:此方法仅在macOS上实现。


Vector2i ime_get_selection() const 🔗

返回输入法编辑器组合字符串中的文本选择,Vector2ix组件是插入符号位置,y是选择的长度。

注意:此方法仅在macOS上实现。


String ime_get_text() const 🔗

返回输入法编辑器窗口中包含的组合字符串。

注意:此方法仅在macOS上实现。


bool is_dark_mode() const 🔗

如果操作系统使用暗模式,则返回true

注意:此方法在Android、iOS、macOS、Windows和Linux(X11/Wayland)上实现。


bool is_dark_mode_supported() const 🔗

如果操作系统支持暗模式,则返回true

注意:此方法在Android、iOS、macOS、Windows和Linux(X11/Wayland)上实现。


bool is_touchscreen_available() const 🔗

如果触摸事件可用(Android或iOS),则返回true,在Web平台上检测到该功能,或者如果ProjectSettings.input_devices/pointing/emulate_touch_from_mousetrue


bool is_window_transparency_available() const 🔗

如果窗口背景可以透明,则返回true。如果ProjectSettings.display/window/per_pixel_transparency/allowed设置为false,或者渲染器或操作系统合成器不支持透明度,则此方法返回false


int keyboard_get_current_layout() const 🔗

返回活动键盘布局索引。

注意:此方法在Linux(X11/Wayland)、macOS和Windows上实现。


Key keyboard_get_keycode_from_physical(keycode: Key) const 🔗

将物理(US QWERTY)keycode转换为活动键盘布局中的一个。

注意:此方法在Linux(X11/Wayland)、macOS和Windows上实现。


Key keyboard_get_label_from_physical(keycode: Key) const 🔗

将物理(US QWERTY)keycode转换为活动键盘布局中打印在键上的本地化标签。

注意:此方法在Linux(X11/Wayland)、macOS和Windows上实现。


int keyboard_get_layout_count() const 🔗

返回键盘布局的数量。

注意:此方法在Linux(X11/Wayland)、macOS和Windows上实现。


String keyboard_get_layout_language(index: int) const 🔗

返回位于index位置的键盘布局的ISO-639/BCP-47语言代码。

注意:此方法在Linux(X11/Wayland)、macOS和Windows上实现。


String keyboard_get_layout_name(index: int) const 🔗

返回位于index位置的键盘布局的本地化名称。

注意:此方法在Linux(X11/Wayland)、macOS和Windows上实现。


void keyboard_set_current_layout(index: int) 🔗

设置活动键盘布局。

注意:此方法在Linux(X11/Wayland)、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(mouse_mode: MouseMode) 🔗

设置当前鼠标模式。另请参见mouse_get_mode()


void process_events() 🔗

执行窗口管理器处理,包括输入刷新。另请参见force_process_and_drop_events()Input.flush_buffered_events()Input.use_accumulated_input


void register_additional_output(object: Object) 🔗

注册一个Object,它表示将在正常窗口之外呈现的附加输出。Object仅用作标识符,稍后可以传递给unregister_additional_output()

这可用于防止i3D在不可见正常窗口时跳过渲染。


int screen_get_dpi(screen: int = -1) const 🔗

返回指定屏幕的每英寸点密度。如果screenSCREEN_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/Wayland)、macOS和Windows上实现。在不受支持的平台上返回72


Image screen_get_image(screen: int = -1) const 🔗

返回screen的屏幕截图。

注意:此方法在Linux(X11)、macOS和Windows上实现。

注意:在macOS上,此方法需要“屏幕录制”权限,如果未授予权限,它将返回桌面壁纸颜色。


Image screen_get_image_rect(rect: Rect2i) const 🔗

返回屏幕截图rect

注意:此方法在macOS和Windows上实现。

注意:在macOS上,此方法需要“屏幕录制”权限,如果未授予权限,它将返回桌面壁纸颜色。


float screen_get_max_scale() const 🔗

返回所有屏幕的最大比例因子。

注意:如果系统中至少有一个hiDPI(Retina)屏幕,则macOS上的返回值为2.0,在所有其他情况下为1.0

注意:此方法仅在macOS上实现。


ScreenOrientation screen_get_orientation(screen: int = -1) const 🔗

返回screen的当前方向。另请参见screen_set_orientation()

注意:此方法在Android和iOS上实现。


Color screen_get_pixel(position: Vector2i) const 🔗

返回position处显示像素的颜色。

注意:此方法在Linux(X11)、macOS和Windows上实现。

注意:在macOS上,此方法需要“屏幕录制”权限,如果未授予权限,它将返回桌面壁纸颜色。


Vector2i screen_get_position(screen: int = -1) const 🔗

返回屏幕左上角的位置,以像素为单位。在多显示器设置中,屏幕位置相对于虚拟桌面区域。在多显示器设置中,如果屏幕分辨率或方向不同,原点可能会位于任何显示器之外,就像这样:

* (0, 0)        +-------+
                |       |
+-------------+ |       |
|             | |       |
|             | |       |
+-------------+ +-------+

另请参阅screen_get_size()

注意:在Linux(Wayland)上,此方法始终返回(0,0)


float screen_get_refresh_rate(screen: int = -1) const 🔗

返回指定屏幕的当前刷新率。如果screenSCREEN_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(screen: int = -1) const 🔗

按索引返回指定屏幕的比例因子。

注意:在macOS上,对于hiDPI(Retina)屏幕,返回值为2.0,对于所有其他情况,返回值为1.0

注意:在Linux(Wayland)上,只有当screenSCREEN_OF_MAIN_WINDOW时,返回的值才是准确的。由于API限制,如果屏幕具有小数比例,传递直接索引将返回四舍五入的整数(例如1.25将四舍五入到2.0)。

注意:此方法在Android、iOS、Web、macOS和Linux(Wayland)上实现。


Vector2i screen_get_size(screen: int = -1) const 🔗

返回屏幕的像素大小。另请参见screen_get_position()screen_get_usable_rect()


Rect2i screen_get_usable_rect(screen: int = -1) const 🔗

返回屏幕中未被状态栏遮挡的部分(以像素为单位)。另请参见screen_get_size()


bool screen_is_kept_on() const 🔗

如果操作系统的省电措施永远不应该关闭屏幕,则返回true。另请参见screen_set_keep_on()


void screen_set_keep_on(enable: bool) 🔗

设置操作系统的省电措施是否永远不关闭屏幕。另请参见screen_is_kept_on()


void screen_set_orientation(orientation: ScreenOrientation, screen: int = -1) 🔗

设置screenorientation。另请参见screen_get_orientation()

注意:在iOS,如果没有将ProjectSettings.display/window/handheld/orientation设置为SCREEN_SENSOR,则此方法无效。


void set_icon(image: Image) 🔗

使用Image设置窗口图标(通常显示在左上角)。要使用操作系统本机格式的图标,请改用set_native_icon()

注意:需要支持FEATURE_ICON


void set_native_icon(filename: String) 🔗

以操作系统的本机格式设置窗口图标(通常显示在左上角)。filename处的文件必须是Windows上的. ico格式或macOS上的.icns格式。通过使用特制的.ico.icns图标,set_native_icon()允许根据图标显示的大小指定不同的图标。此大小由操作系统和用户偏好(包括显示比例因子)决定。要使用其他格式的图标,请改用set_icon()

注意:需要支持FEATURE_NATIVE_ICON


void set_system_theme_change_callback(callable: Callable) 🔗

设置更改系统主题设置时应调用的callable。回调方法应为零参数。

注意:此方法在Android、iOS、macOS、Windows和Linux(X11/Wayland)上实现。


void show_emoji_and_symbol_picker() const 🔗

打开系统表情符号和符号选择器。

注意:此方法在macOS和Windows上实现。


Rect2 status_indicator_get_rect(id: int) const 🔗

返回屏幕坐标中给定状态指示器id的矩形。如果状态指示器不可见,则返回一个空的Rect2

注意:此方法在macOS和Windows上实现。


void status_indicator_set_callback(id: int, callback: Callable) 🔗

设置应用程序状态指示器激活回调。callback应采用两个参数:int鼠标按钮索引(MouseButton值之一)和Vector2i屏幕坐标中的单击位置。

注意:此方法在macOS和Windows上实现。


void status_indicator_set_icon(id: int, icon: Texture2D) 🔗

设置应用程序状态指示器图标。

注意:此方法在macOS和Windows上实现。


void status_indicator_set_menu(id: int, menu_rid: RID) 🔗

设置应用程序状态指示器本机弹出菜单。

注意:在macOS上,菜单由任何鼠标按钮激活。它的激活回调是而不是触发的。

注意:在Windows上,通过鼠标右键激活菜单,选择状态图标并按下Shift+F10或应用程序键。菜单对其他鼠标按钮的激活回调仍然被触发。

注意:仅当NativeMenu支持NativeMenu.FEATURE_POPUP_MENU功能时才支持本机弹出窗口。


void status_indicator_set_tooltip(id: int, tooltip: String) 🔗

设置应用程序状态指示器工具提示。

注意:此方法在macOS和Windows上实现。


String tablet_get_current_driver() const 🔗

返回当前活动的平板电脑驱动程序名称。

注意:此方法仅在Windows上实现。


int tablet_get_driver_count() const 🔗

返回可用平板电脑驱动程序的总数。

注意:此方法仅在Windows上实现。


String tablet_get_driver_name(idx: int) const 🔗

返回给定索引的平板驱动程序名称。

注意:此方法仅在Windows上实现。


void tablet_set_current_driver(name: String) 🔗

设置活动的平板电脑驱动程序名称。

支持的驱动程序:

-winink:Windows Ink API,默认(需要Windows 8.1+)。

-wintab:Wacom Wintab API(需要兼容的设备驱动程序)。

-虚拟:虚拟驱动程序,平板电脑输入被禁用。

注意:此方法仅在Windows上实现。


Array[Dictionary] tts_get_voices() const 🔗

返回语音信息字典的Array

每个Dictionary包含两个String条目:

-name是语音名称。

-id是语音标识符。

-语言lang_Variant格式的语言代码。lang部分是基于ISO-639标准的2或3个字母的小写代码。Variant部分是描述国家、地区或/和方言的依赖于引擎的字符串。

请注意,i3D依赖于系统库来实现语音合成功能。这些库默认安装在Windows和macOS上,但不是所有Linux发行版上。如果它们不存在,此方法将返回一个空列表。这适用于Linux的i3D用户,以及运行使用语音合成的i3D应用Linux的最终用户。

注意:此方法在Android、iOS、Web、Linux(X11/Wayland)、macOS和Windows上实现。

注意:ProjectSettings.audio/general/text_to_speech应该是true才能使用语音合成。


PackedStringArray tts_get_voices_for_language(language: String) const 🔗

返回language的语音标识符的PackedStringArray

注意:此方法在Android、iOS、Web、Linux(X11/Wayland)、macOS和Windows上实现。

注意:ProjectSettings.audio/general/text_to_speech应该是true才能使用语音合成。


bool tts_is_paused() const 🔗

如果合成器处于暂停状态,则返回true

注意:此方法在Android、iOS、Web、Linux(X11/Wayland)、macOS和Windows上实现。

注意:ProjectSettings.audio/general/text_to_speech应该是true才能使用语音合成。


bool tts_is_speaking() const 🔗

如果合成器正在生成语音,或者有语音在队列中等待,则返回true

注意:此方法在Android、iOS、Web、Linux(X11/Wayland)、macOS和Windows上实现。

注意:ProjectSettings.audio/general/text_to_speech应该是true才能使用语音合成。


void tts_pause() 🔗

使合成器进入暂停状态。

注意:此方法在Android、iOS、Web、Linux(X11/Wayland)、macOS和Windows上实现。

注意:ProjectSettings.audio/general/text_to_speech应该是true才能使用语音合成。


void tts_resume() 🔗

如果已暂停,则恢复合成器。

注意:此方法在Android、iOS、Web、Linux(X11/Wayland)、macOS和Windows上实现。

注意:ProjectSettings.audio/general/text_to_speech应该是true才能使用语音合成。


void tts_set_utterance_callback(event: TTSUtteranceEvent, callable: Callable) 🔗

添加回调,当话语开始、完成、取消或到达文本边界时调用该回调。

-TTS_UTTERANCE_STARTEDTTS_UTTERANCE_ENDEDTTS_UTTERANCE_CANCELEDcallable的方法应该采用一个int参数,即话语ID。

-TTS_UTTERANCE_BOUNDARYcallable的方法应该采用两个int参数,字符的索引和话语ID。

注意:边界回调的颗粒度取决于引擎。

注意:此方法在Android、iOS、Web、Linux(X11/Wayland)、macOS和Windows上实现。

注意:ProjectSettings.audio/general/text_to_speech应该是true才能使用语音合成。


void tts_speak(text: String, voice: String, volume: int = 50, pitch: float = 1.0, rate: float = 1.0, utterance_id: int = 0, interrupt: bool = false) 🔗

将话语添加到队列中。如果interrupttrue,则首先清除队列。

-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作为参数传递给回调函数。

注意:在Windows和Linux(X11/Wayland)上,话语text可以使用SSML标记。SSML支持取决于引擎和语音。如果引擎不支持SSML,您应该在调用tts_speak()之前删除所有XML标记。

注:音高、速率和音量的颗粒度取决于引擎和声音。值可能会被截断。

注意:此方法在Android、iOS、Web、Linux(X11/Wayland)、macOS和Windows上实现。

注意:ProjectSettings.audio/general/text_to_speech应该是true才能使用语音合成。


void tts_stop() 🔗

停止正在进行的合成并从队列中删除所有话语。

注意:此方法在Android、iOS、Web、Linux(X11/Linux)、macOS和Windows上实现。

注意:ProjectSettings.audio/general/text_to_speech应该是true才能使用语音合成。


void unregister_additional_output(object: Object) 🔗

取消注册表示通过register_additional_output()注册的附加输出的Object


int virtual_keyboard_get_height() const 🔗

返回屏幕键盘的高度(以像素为单位)。如果没有键盘或当前隐藏键盘,则返回0。


void virtual_keyboard_hide() 🔗

如果显示虚拟键盘,则隐藏它,否则不执行任何操作。


void virtual_keyboard_show(existing_text: String, position: Rect2 = Rect2(0, 0, 0, 0), type: VirtualKeyboardType = 0, max_length: int = -1, cursor_start: int = -1, cursor_end: int = -1) 🔗

如果平台有虚拟键盘,则显示虚拟键盘。

existing_text参数对于实现您自己的LineEditTextEdit很有用,因为它告诉虚拟键盘已经键入了哪些文本(虚拟键盘使用它进行自动更正和预测)。

position参数是编辑文本的屏幕空间Rect2

type参数允许配置要显示的虚拟键盘类型。

max_length限制与-1不同时可以输入的字符数。

如果未设置cursor_startcursor_start可以选择定义当前文本光标位置。

cursor_startcursor_end可以选择定义当前文本选择。

注意:此方法在Android、iOS和Web上实现。


void warp_mouse(position: Vector2i) 🔗

将鼠标光标位置设置为相对于当前聚焦应用窗口管理器窗口左上角原点的给定position

注意:warp_mouse()仅在Windows、macOS和Linux(X11/Wayland)上受支持。它对Android、iOS和Web没有影响。


bool window_can_draw(window_id: int = 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(window_id: int = 0) const 🔗

返回window_id附加到的WindowObject.get_instance_id()


int window_get_current_screen(window_id: int = 0) const 🔗

返回window_id指定的窗口当前所在的屏幕。如果屏幕与多个显示器重叠,则返回窗口中心所在的屏幕。另请参见window_set_current_screen()


bool window_get_flag(flag: WindowFlags, window_id: int = 0) const 🔗

返回给定窗口的flag的当前值。


Vector2i window_get_max_size(window_id: int = 0) const 🔗

返回窗口的最大大小(以像素为单位)。另请参见window_set_max_size()


Vector2i window_get_min_size(window_id: int = 0) const 🔗

返回窗口的最小大小(以像素为单位)。另请参见window_set_min_size()


WindowMode window_get_mode(window_id: int = 0) const 🔗

返回给定窗口的模式。


int window_get_native_handle(handle_type: HandleType, window_id: int = 0) const 🔗

返回用于插件的内部结构指针。

注意:此方法在Android、Linux(X11/Wayland)、macOS和Windows上实现。


Rect2i window_get_popup_safe_rect(window: int) const 🔗

返回屏幕坐标系中用于打开弹出窗口的控件或菜单项的边界框。


Vector2i window_get_position(window_id: int = 0) const 🔗

返回给定窗口的工作区在屏幕上的位置。


Vector2i window_get_position_with_decorations(window_id: int = 0) const 🔗

返回给定窗口在屏幕上的位置,包括操作系统绘制的边框。另请参见window_get_position()


Vector3i window_get_safe_title_margins(window_id: int = 0) const 🔗

返回设置WINDOW_FLAG_EXTEND_TO_TITLE标志时可以安全使用的标题的左边距(x)、右边距(y)和高度(z)。


Vector2i window_get_size(window_id: int = 0) const 🔗

返回window_id指定的窗口大小(以像素为单位),不包括操作系统绘制的边框。这也称为“客户区”。另请参见window_get_size_with_decorations()window_set_size()window_get_position()


Vector2i window_get_size_with_decorations(window_id: int = 0) const 🔗

返回window_id指定的窗口大小(以像素为单位),包括操作系统绘制的边框。另请参见window_get_size()


Vector2i window_get_title_size(title: String, window_id: int = 0) const 🔗

返回window_id指定的窗口的估计窗口标题栏大小(包括文本和窗口按钮)(以像素为单位)。此方法不会更改窗口标题。

注意:此方法在macOS和Windows上实现。


VSyncMode window_get_vsync_mode(window_id: int = 0) const 🔗

返回给定窗口的V-Sync模式。


bool window_is_focused(window_id: int = 0) const 🔗

如果window_id指定的窗口已聚焦,则返回true


bool window_is_maximize_allowed(window_id: int = 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(window_id: int = 0) 🔗

window_id指定的窗口移动到前台,使其在其他窗口上可见。


void window_request_attention(window_id: int = 0) 🔗

使window_id指定的窗口请求关注,这通过窗口标题和任务栏条目闪烁来实现,直到窗口被聚焦。如果窗口当前被聚焦,这通常没有可见的效果。确切的行为因操作系统而异。


void window_set_current_screen(screen: int, window_id: int = 0) 🔗

window_id指定的窗口移动到指定的screen。另请参见window_get_current_screen()


void window_set_drop_files_callback(callback: Callable, window_id: int = 0) 🔗

设置当文件从操作系统的文件管理器删除到window_id指定的窗口时应调用的callbackcallback应带一个PackedStringArray参数,即删除文件的列表。

警告:仅限高级用户!将此类回调添加到Window节点将覆盖其默认实现,这可能会引入错误。

注意:此方法在Windows、macOS、Linux(X11/Wayland)和Web上实现。


void window_set_exclusive(window_id: int, exclusive: bool) 🔗

如果设置为true,此窗口将始终停留在其父窗口的顶部,打开此窗口时父窗口将忽略输入。

注意:在macOS上,独占窗口仅限于与父窗口相同的空间(虚拟桌面或屏幕)。

注意:此方法在macOS和Windows上实现。


void window_set_flag(flag: WindowFlags, enabled: bool, window_id: int = 0) 🔗

启用或禁用给定窗口的给定flag。有关可能的值及其行为,请参阅WindowFlags


void window_set_ime_active(active: bool, window_id: int = 0) 🔗

设置是否应为window_id指定的窗口启用输入法编辑器。另请参见window_set_ime_position()


void window_set_ime_position(position: Vector2i, window_id: int = 0) 🔗

设置指定window_id输入法编辑器弹出窗口的位置。仅当指定window_idwindow_set_ime_active()设置为true时才有效。


void window_set_input_event_callback(callback: Callable, window_id: int = 0) 🔗

设置当任何InputEvent发送到window_id指定的窗口时应调用的callback

警告:仅限高级用户!将此类回调添加到Window节点将覆盖其默认实现,这可能会引入错误。


void window_set_input_text_callback(callback: Callable, window_id: int = 0) 🔗

将使用虚拟键盘输入文本时应调用的callback设置为window_id指定的窗口。

警告:仅限高级用户!将此类回调添加到Window节点将覆盖其默认实现,这可能会引入错误。


void window_set_max_size(max_size: Vector2i, window_id: int = 0) 🔗

以像素为单位设置window_id指定的窗口的最大大小。通常,用户无法拖动窗口使其大于指定的大小。另请参见window_get_max_size()

注意:建议改用Window.max_size更改此值。

注意:使用第三方工具,用户可以禁用窗口几何限制,从而绕过此限制。


void window_set_min_size(min_size: Vector2i, window_id: int = 0) 🔗

将给定窗口的最小大小设置为min_size(以像素为单位)。通常,用户无法拖动窗口使其小于指定的大小。另请参见window_get_min_size()

注意:建议改用Window.min_size更改此值。

注意:默认情况下,主窗口的最小大小为Vector2i(64,64)。这可以防止当窗口调整为接近零的大小时可能出现的问题。

注意:使用第三方工具,用户可以禁用窗口几何限制,从而绕过此限制。


void window_set_mode(mode: WindowMode, window_id: int = 0) 🔗

将给定窗口的窗口模式设置为mode。有关可能的值以及每个模式的行为方式,请参阅WindowMode

注意:在Android上,将其设置为WINDOW_MODE_FULLSCREENWINDOW_MODE_EXCLUSIVE_FULLSCREEN将启用沉浸式模式。

注意:将窗口设置为全屏会强制将无边框标志设置为true,因此请确保在不需要时将其设置回false


void window_set_mouse_passthrough(region: PackedVector2Array, window_id: int = 0) 🔗

设置窗口的多边形区域,该区域接受鼠标事件。区域外的鼠标事件将被传递。

传递一个空数组将禁用传递支持(所有鼠标事件将被窗口拦截,这是默认行为)。

# Set region, using Path2D node.
DisplayServer.window_set_mouse_passthrough($Path2D.curve.get_baked_points())

# Set region, using Polygon2D node.
DisplayServer.window_set_mouse_passthrough($Polygon2D.polygon)

# Reset region to default.
DisplayServer.window_set_mouse_passthrough([])

注意: 在Windows上,窗口外部的部分不被绘制,而在Linux(X11)和macOS上则会被绘制。

注意:此方法已在Linux(X11)、macOS和Windows上实现。


void window_set_popup_safe_rect(window: int, rect: Rect2i) 🔗

在屏幕坐标系中设置用于打开弹出窗口的控件或菜单项的边界框。单击此区域不会自动关闭此弹出窗口。


void window_set_position(position: Vector2i, window_id: int = 0) 🔗

将给定的窗口位置设置为position。在多显示器设置中,屏幕位置相对于虚拟桌面区域。在具有不同屏幕分辨率或方向的多显示器设置中,原点可能位于任何显示器之外。

* (0, 0)        +-------+
                |       |
+-------------+ |       |
|             | |       |
|             | |       |
+-------------+ +-------+

另请参阅window_get_position()window_set_size()

注意:建议使用Window.position来更改此值。

注意:在Linux(Wayland)上:此方法无效。


void window_set_rect_changed_callback(callback: Callable, window_id: int = 0) 🔗

设置window_id指定的窗口移动或调整大小时调用的callback

警告:仅限高级用户!将此类回调添加到Window节点将覆盖其默认实现,这可能会引入错误。


void window_set_size(size: Vector2i, window_id: int = 0) 🔗

将给定窗口的大小设置为size(以像素为单位)。另请参见window_get_size()window_get_position()

注意:建议改用Window.size更改此值。


void window_set_title(title: String, window_id: int = 0) 🔗

将给定窗口的标题设置为title

注意:建议改用Window.title更改此值。

注意:避免每帧更改窗口标题,因为这可能会导致某些窗口管理器出现性能问题。尝试每秒最多只更改几次窗口标题。


void window_set_transient(window_id: int, parent_window_id: int) 🔗

设置窗口瞬态父窗口。瞬态窗口将与其瞬态父窗口一起销毁,并在关闭时将焦点返回给父窗口。瞬态窗口显示在非独占全屏父窗口顶部。瞬态窗口无法进入全屏模式。

注意:建议改用Window.transient更改此值。

注意:行为可能因平台而异。


void window_set_vsync_mode(vsync_mode: VSyncMode, window_id: int = 0) 🔗

设置给定窗口的V-Sync模式。另请参见ProjectSettings.display/window/vsync/vsync_mode

有关可能的值以及它们如何影响应用程序的行为,请参阅VSyncMode

根据平台和使用的渲染器,如果不支持所需模式,引擎将回退到VSYNC_ENABLED

注意:VSYNC_ENABLED之外的V-Sync模式仅在Forward+和Mobile渲染方法中受支持,不支持兼容性。


void window_set_window_buttons_offset(offset: Vector2i, window_id: int = 0) 🔗

设置WINDOW_FLAG_EXTEND_TO_TITLE标志时,将偏移量设置为第一个标题栏按钮的中心。

注意:此标志仅在macOS上实现。


void window_set_window_event_callback(callback: Callable, window_id: int = 0) 🔗

设置window_id指定的窗口中发生事件时将调用的callback

警告:仅限高级用户!将此类回调添加到Window节点将覆盖其默认实现,这可能会引入错误。


void window_start_drag(window_id: int = 0) 🔗

使用当前鼠标位置,使用给定的window_id对窗口启动交互式拖动操作。在处理正在按下的鼠标按钮时调用此方法,以模拟窗口标题栏上的按下事件。使用此方法允许窗口参与空间切换、平铺和其他系统功能。

注意:此方法在Linux(X11/Wayland)、macOS和Windows上实现。


void window_start_resize(edge: WindowResizeEdge, window_id: int = 0) 🔗

使用当前鼠标位置,使用给定的window_id对窗口启动交互式调整大小操作。在处理正在按下的鼠标按钮时调用此方法以模拟窗口边缘的按下事件。

注意:此方法在Linux(X11/Wayland)、macOS和Windows上实现。