Files
Sprout-Farm/SproutFarm-Backend/test/文档/DisplayServer_总结_Markdown.md
2025-09-15 19:10:37 +08:00

14 KiB
Raw Blame History

DisplayServer API 参考文档

类简介

继承Object

DisplayServer 是用于低阶窗口管理的服务器接口。所有与窗口管理相关的内容都由 DisplayServer显示服务器处理。

无头模式:如果使用 --headless 命令行参数启动引擎,就会禁用所有渲染和窗口管理功能,此时 DisplayServer 的大多数函数都会返回虚设值。


方法列表

🔔 系统交互

void beep()

发出系统提示音。

void enable_for_stealing_focus(process_id: int)

允许指定进程获取焦点。

void force_process_and_drop_events()

强制处理并丢弃所有事件。


📋 剪贴板操作

String clipboard_get()

获取剪贴板文本内容。

Image clipboard_get_image()

获取剪贴板图像内容。

String clipboard_get_primary()

获取主剪贴板文本内容(仅限 Linux

bool clipboard_has()

检查剪贴板是否有内容。

bool clipboard_has_image()

检查剪贴板是否有图像。

void clipboard_set(clipboard: String)

设置剪贴板文本内容。

void clipboard_set_primary(clipboard_primary: String)

设置主剪贴板文本内容(仅限 Linux


🖱️ 鼠标和光标

CursorShape cursor_get_shape()

获取当前光标形状。

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

设置自定义光标图像。

void cursor_set_shape(shape: CursorShape)

设置光标形状。

BitField[MouseButtonMask] mouse_get_button_state()

获取鼠标按键状态。

MouseMode mouse_get_mode()

获取鼠标模式。

Vector2i mouse_get_position()

获取鼠标位置。

void mouse_set_mode(mouse_mode: MouseMode)

设置鼠标模式。

void warp_mouse(position: Vector2i)

将鼠标光标移动到指定位置。


💬 对话框

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

显示文本输入对话框。

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

显示系统对话框。

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)

显示带扩展选项的文件选择对话框。


🎨 主题和颜色

Color get_accent_color()

获取系统强调色。

Color get_base_color()

获取系统基础色。

bool is_dark_mode()

检查系统是否为深色模式。

bool is_dark_mode_supported()

检查系统是否支持深色模式。

void set_system_theme_change_callback(callable: Callable)

设置系统主题变化时的回调。


📱 显示和屏幕

Array[Rect2] get_display_cutouts()

获取显示器刘海信息。

Rect2i get_display_safe_area()

获取显示器安全区域。

int get_keyboard_focus_screen()

获取键盘焦点所在屏幕。

String get_name()

获取显示服务器名称。

int get_primary_screen()

获取主屏幕索引。

int get_screen_count()

获取屏幕数量。

int get_screen_from_rect(rect: Rect2)

根据矩形位置获取屏幕索引。

bool get_swap_cancel_ok()

获取是否交换确定取消按钮。

int get_window_at_screen_position(position: Vector2i)

获取指定屏幕位置的窗口ID。

PackedInt32Array get_window_list()

获取所有窗口ID列表。


🖥️ 屏幕操作

int screen_get_dpi(screen: int = -1)

获取屏幕DPI。

Image screen_get_image(screen: int = -1)

获取屏幕截图。

Image screen_get_image_rect(rect: Rect2i)

获取屏幕指定区域截图。

float screen_get_max_scale()

获取所有屏幕的最大缩放系数。

ScreenOrientation screen_get_orientation(screen: int = -1)

获取屏幕朝向。

Color screen_get_pixel(position: Vector2i)

获取指定位置的像素颜色。

Vector2i screen_get_position(screen: int = -1)

获取屏幕位置。

float screen_get_refresh_rate(screen: int = -1)

获取屏幕刷新率。

float screen_get_scale(screen: int = -1)

获取屏幕缩放系数。

Vector2i screen_get_size(screen: int = -1)

获取屏幕大小。

Rect2i screen_get_usable_rect(screen: int = -1)

获取屏幕可用区域。

bool screen_is_kept_on()

检查屏幕是否保持开启。

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)

使用原生格式设置窗口图标。


💾 输出管理

bool has_additional_outputs()

检查是否有额外输出设备。

void register_additional_output(object: Object)

注册额外输出设备。

void unregister_additional_output(object: Object)

取消注册额外输出设备。


功能检测

bool has_feature(feature: Feature)

检查是否支持指定功能。

bool has_hardware_keyboard()

检查是否有硬件键盘。

bool is_touchscreen_available()

检查是否支持触屏。

bool is_window_transparency_available()

检查是否支持窗口透明。


⌨️ 键盘

int keyboard_get_current_layout()

获取当前键盘布局。

Key keyboard_get_keycode_from_physical(keycode: Key)

从物理按键获取键码。

Key keyboard_get_label_from_physical(keycode: Key)

从物理按键获取标签。

int keyboard_get_layout_count()

获取键盘布局数量。

String keyboard_get_layout_language(index: int)

获取键盘布局语言。

String keyboard_get_layout_name(index: int)

获取键盘布局名称。

void keyboard_set_current_layout(index: int)

设置当前键盘布局。


📝 输入法

Vector2i ime_get_selection()

获取输入法选中范围。

String ime_get_text()

获取输入法文本。


🎯 状态指示器

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

创建状态指示器。

void delete_status_indicator(id: int)

删除状态指示器。

Rect2 status_indicator_get_rect(id: int)

获取状态指示器位置。

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()

获取当前数位板驱动。

int tablet_get_driver_count()

获取数位板驱动数量。

String tablet_get_driver_name(idx: int)

获取数位板驱动名称。

void tablet_set_current_driver(name: String)

设置数位板驱动。


🗣️ 文本转语音

Array[Dictionary] tts_get_voices()

获取语音列表。

PackedStringArray tts_get_voices_for_language(language: String)

获取指定语言的语音列表。

bool tts_is_paused()

检查是否暂停。

bool tts_is_speaking()

检查是否正在朗读。

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()

停止朗读。


⌨️ 虚拟键盘

int virtual_keyboard_get_height()

获取虚拟键盘高度。

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)

显示虚拟键盘。


🪟 窗口管理

bool window_can_draw(window_id: int = 0)

检查窗口是否可绘制。

int window_get_active_popup()

获取活动弹出窗口ID。

int window_get_attached_instance_id(window_id: int = 0)

获取窗口附加的实例ID。

int window_get_current_screen(window_id: int = 0)

获取窗口所在屏幕。

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

获取窗口标志。

Vector2i window_get_max_size(window_id: int = 0)

获取窗口最大尺寸。

Vector2i window_get_min_size(window_id: int = 0)

获取窗口最小尺寸。

WindowMode window_get_mode(window_id: int = 0)

获取窗口模式。

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

获取窗口原生句柄。

Rect2i window_get_popup_safe_rect(window: int)

获取弹出窗口安全区域。

Vector2i window_get_position(window_id: int = 0)

获取窗口位置。

Vector2i window_get_position_with_decorations(window_id: int = 0)

获取窗口位置(含边框)。

Vector3i window_get_safe_title_margins(window_id: int = 0)

获取标题栏安全边距。

Vector2i window_get_size(window_id: int = 0)

获取窗口大小。

Vector2i window_get_size_with_decorations(window_id: int = 0)

获取窗口大小(含边框)。

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

获取标题栏大小。

VSyncMode window_get_vsync_mode(window_id: int = 0)

获取垂直同步模式。

bool window_is_focused(window_id: int = 0)

检查窗口是否有焦点。

bool window_is_maximize_allowed(window_id: int = 0)

检查窗口是否可最大化。

bool window_maximize_on_title_dbl_click()

检查双击标题栏是否最大化。

bool window_minimize_on_title_dbl_click()

检查双击标题栏是否最小化。

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)

开始调整窗口大小。


📞 帮助系统

void help_set_search_callbacks(search_callback: Callable, action_callback: Callable)

设置帮助系统搜索回调。

void show_emoji_and_symbol_picker()

显示表情符号选择器。


⚙️ 事件处理

void process_events()

处理事件。


常量

  • SCREEN_WITH_MOUSE_FOCUS = -4:鼠标焦点所在屏幕
  • SCREEN_WITH_KEYBOARD_FOCUS = -3:键盘焦点所在屏幕
  • SCREEN_PRIMARY = -2:主屏幕
  • SCREEN_OF_MAIN_WINDOW = -1:主窗口所在屏幕
  • MAIN_WINDOW_ID = 0主窗口ID
  • INVALID_WINDOW_ID = -1无效窗口ID

枚举

Feature

系统功能支持检测枚举,包含多种功能如子窗口、触屏、鼠标、剪贴板、虚拟键盘等支持检测。

MouseMode

鼠标模式枚举:可见、隐藏、捕获、限制等模式。

ScreenOrientation

屏幕朝向枚举:横屏、竖屏及其反向,以及传感器自动模式。

VirtualKeyboardType

虚拟键盘类型默认、多行、数字、小数、电话、邮箱、密码、URL等。

CursorShape

光标形状枚举:箭头、工字形、指向手形等多种光标样式。

WindowFlags

窗口标志枚举:控制窗口的各种行为和外观属性。

WindowMode

窗口模式枚举:窗口、最小化、最大化、全屏等模式。

HandleType

句柄类型枚举:用于获取不同类型的原生窗口句柄。

VSyncMode

垂直同步模式枚举:控制画面撕裂和帧率同步。

TTSUtteranceEvent

语音朗读事件枚举:开始、结束、取消、边界等事件。


注意:此文档已排除所有已弃用的方法。某些功能可能仅在特定平台上可用,请参考原始文档中的平台支持说明。