

**`OS` 类**是 Godot 引擎中一个重要的单例，用于提供与操作系统交互的常见功能。它允许你访问视频驱动、处理延时、环境变量、执行外部程序等。

在 Godot 4 中，与窗口和时间相关的功能已分别被移动到 `DisplayServer` 和 `Time` 类。

### 属性

- `bool delta_smoothing`：**默认 `true`**。启用增量平滑，用于在垂直同步开启时补偿帧之间的时间变化。
    
- `bool low_processor_usage_mode`：**默认 `false`**。启用低处理器使用模式，通过按需刷新屏幕来节省 CPU 资源，特别适用于移动设备。
    
- `int low_processor_usage_mode_sleep_usec`：**默认 `6900`**。低处理器模式下，帧之间的睡眠时间（微秒），值越大 CPU 使用率越低。
    
---

### 方法概览

| 方法名                                                           | 简要说明                                                 | 适用平台                                     |
| ------------------------------------------------------------- | ---------------------------------------------------- | ---------------------------------------- |
| `alert(text, title)`                                          | 显示一个阻塞式的模态对话框。                                       | 所有                                       |
| `close_midi_inputs()`                                         | 关闭系统 MIDI 驱动，停止接收 MIDI 事件。                           | Linux, macOS, Windows, Web               |
| `crash(message)`                                              | 使引擎崩溃。仅用于测试，不建议常规使用。                                 | 所有                                       |
| `create_instance(arguments)`                                  | 创建一个新的 Godot 实例，返回进程 ID。                             | Android, Linux, macOS, Windows           |
| `create_process(path, arguments, open_console)`               | 创建一个新的独立进程，返回进程 ID。                                  | Android, Linux, macOS, Windows           |
| `delay_msec(msec)`                                            | 阻塞当前线程 `msec` 毫秒。                                    | 所有                                       |
| `delay_usec(usec)`                                            | 阻塞当前线程 `usec` 微秒。                                    | 所有                                       |
| `execute(path, arguments, output, read_stderr, open_console)` | 阻塞式执行外部程序，可获取其退出代码和输出。                               | Android, Linux, macOS, Windows           |
| `execute_with_pipe(path, arguments, blocking)`                | 创建带 I/O 重定向的独立进程，返回包含 PID、stdin/stdout/stderr 管道的字典。 | Android, Linux, macOS, Windows           |
| `find_keycode_from_string(string)`                            | 根据字符串查找对应的键码。                                        | 所有                                       |
| `get_cache_dir()`                                             | 返回全局缓存数据目录路径。                                        | 所有                                       |
| `get_cmdline_args()`                                          | 返回所有传递给引擎的命令行参数。                                     | 所有                                       |
| `get_cmdline_user_args()`                                     | 返回双破折号 `--` 之后的用户自定义命令行参数。                           | 所有                                       |
| `get_config_dir()`                                            | 返回全局用户配置目录路径。                                        | 所有                                       |
| `get_connected_midi_inputs()`                                 | 返回已连接的 MIDI 设备名称列表。                                  | Linux, macOS, Windows, Web               |
| `get_data_dir()`                                              | 返回全局用户数据目录路径。                                        | 所有                                       |
| `get_distribution_name()`                                     | 返回 Linux/BSD 的发行版名称。                                 | Linux, BSD, Android                      |
| `get_entropy(size)`                                           | 生成指定大小的加密安全随机字节数组。                                   | 所有                                       |
| `get_environment(variable)`                                   | 获取指定环境变量的值。                                          | 所有                                       |
| `get_executable_path()`                                       | 返回当前引擎可执行文件的路径。                                      | 所有                                       |
| `get_granted_permissions()`                                   | 返回已授权的权限列表（Android）或用户选择的文件夹列表（macOS）。               | Android, macOS                           |
| `get_keycode_string(code)`                                    | 将键码转换为字符串。                                           | 所有                                       |
| `get_locale()`                                                | 返回完整的操作系统区域设置字符串。                                    | 所有                                       |
| `get_locale_language()`                                       | 返回操作系统区域设置的语言代码。                                     | 所有                                       |
| `get_main_thread_id()`                                        | 返回主线程的 ID。                                           | 所有                                       |
| `get_memory_info()`                                           | 返回包含物理、空闲、可用内存等信息的字典。                                | 所有                                       |
| `get_model_name()`                                            | 返回当前设备的型号名称。                                         | Android, iOS, macOS, Windows             |
| `get_name()`                                                  | 返回主机平台的名称（如 "Windows", "macOS"）。                     | 所有                                       |
| `get_process_exit_code(pid)`                                  | 获取已终止子进程的退出码。                                        | Android, Linux, macOS, Windows           |
| `get_process_id()`                                            | 返回当前应用程序的进程 ID。                                      | Android, iOS, Linux, macOS, Windows      |
| `get_processor_count()`                                       | 返回 CPU 逻辑核心数。                                        | 所有                                       |
| `get_processor_name()`                                        | 返回 CPU 的型号全名。                                        | Windows, macOS, Linux, iOS               |
| `get_restart_on_exit_arguments()`                             | 返回退出时自动重启项目的命令行参数。                                   | 所有                                       |
| `get_static_memory_peak_usage()`                              | 返回静态内存使用峰值（仅调试版本）。                                   | 所有                                       |
| `get_static_memory_usage()`                                   | 返回静态内存使用量（仅调试版本）。                                    | 所有                                       |
| `get_stderr_type()`                                           | 返回标准错误设备的类型。                                         | 所有                                       |
| `get_stdin_type()`                                            | 返回标准输入设备的类型。                                         | 所有                                       |
| `get_stdout_type()`                                           | 返回标准输出设备的类型。                                         | 所有                                       |
| `get_system_ca_certificates()`                                | 返回系统信任的 PEM 格式证书字符串。                                 | 所有                                       |
| `get_system_dir(dir, shared_storage)`                         | 返回指定系统目录的路径。                                         | Android, Linux, macOS, Windows           |
| `get_system_font_path(font_name, ...)`                        | 返回指定系统字体的文件路径。                                       | Android, iOS, Linux, macOS, Windows      |
| `get_system_font_path_for_text(font_name, text, ...)`         | 返回可用于渲染特定文本的系统替换字体路径数组。                              | Android, iOS, Linux, macOS, Windows      |
| `get_system_fonts()`                                          | 返回可用字体家族名称列表。                                        | Android, iOS, Linux, macOS, Windows      |
| `get_temp_dir()`                                              | 返回全局临时数据目录路径。                                        | 所有                                       |
| `get_thread_caller_id()`                                      | 返回当前线程的 ID。                                          | 所有                                       |
| `get_unique_id()`                                             | 返回一个设备唯一的字符串 ID。**注意**：不用于加密。                        | 所有 (Web 不支持)                             |
| `get_user_data_dir()`                                         | 返回项目专用的用户数据目录路径 (`user://`)。                         | 所有                                       |
| `get_version()`                                               | 返回操作系统的确切版本号。                                        | 所有 (Web 不支持)                             |
| `get_version_alias()`                                         | 返回操作系统的品牌版本名和构建号。                                    | Windows, macOS                           |
| `get_video_adapter_driver_info()`                             | 返回显卡驱动的名称和版本信息。                                      | Linux, BSD, Windows                      |
| `has_environment(variable)`                                   | 检查环境变量是否存在。                                          | 所有                                       |
| `has_feature(tag_name)`                                       | 检查当前实例是否支持某个功能标签。                                    | 所有                                       |
| `is_debug_build()`                                            | 如果是调试构建或在编辑器中运行，返回 `true`。                           | 所有                                       |
| `is_keycode_unicode(code)`                                    | 检查键码是否对应 Unicode 字符。                                 | 所有                                       |
| `is_process_running(pid)`                                     | 检查指定进程 ID 的子进程是否仍在运行。                                | Android, iOS, Linux, macOS, Windows      |
| `is_restart_on_exit_set()`                                    | 检查项目是否被设置为退出时自动重启。                                   | 所有                                       |
| `is_sandboxed()`                                              | 检查应用程序是否在沙箱中运行。                                      | macOS, Linux                             |
| `is_stdout_verbose()`                                         | 检查是否启用了冗长标准输出。                                       | 所有                                       |
| `is_userfs_persistent()`                                      | 检查 `user://` 文件系统是否是持久的。                             | 所有                                       |
| `kill(pid)`                                                   | 终止指定进程 ID 的进程。                                       | Android, iOS, Linux, macOS, Windows      |
| `move_to_trash(path)`                                         | 将文件或目录移动到系统的回收站。                                     | Android, Linux, macOS, Windows           |
| `open_midi_inputs()`                                          | 初始化系统 MIDI 驱动，开始接收 MIDI 事件。                          | Linux, macOS, Windows, Web               |
| `read_buffer_from_stdin(buffer_size)`                         | 从标准输入读取原始字节数组。                                       | Linux, macOS, Windows                    |
| `read_string_from_stdin(buffer_size)`                         | 从标准输入读取字符串。                                          | Linux, macOS, Windows                    |
| `request_permission(name)`                                    | 向操作系统请求指定权限。                                         | Android                                  |
| `request_permissions()`                                       | 请求危险权限。                                              | Android                                  |
| `revoke_granted_permissions()`                                | 清除 macOS 沙箱应用的用户选择文件夹访问权限。                           | macOS                                    |
| `set_environment(variable, value)`                            | 设置环境变量。                                              | 所有                                       |
| `set_restart_on_exit(restart, arguments)`                     | 设置项目退出时是否自动重新启动。                                     | 桌面平台                                     |
| `set_thread_name(name)`                                       | 为当前线程设置名称。                                           | 所有                                       |
| `set_use_file_access_save_and_swap(enabled)`                  | 启用文件保存的“先写临时文件再交换”模式，可避免文件被锁。                        | 所有                                       |
| `shell_open(uri)`                                             | 使用系统默认程序打开 URI（文件、链接等）。                              | Android, iOS, Web, Linux, macOS, Windows |
| `shell_show_in_file_manager(file_or_dir_path, open_folder)`   | 在文件管理器中打开并选中指定文件或目录。                                 | Windows, macOS                           |
| `unset_environment(variable)`                                 | 移除环境变量。                                              | 所有                                       |

---

### 枚举

#### `RenderingDriver`

- `RENDERING_DRIVER_VULKAN` (0)
    
- `RENDERING_DRIVER_OPENGL3` (1)
    
- `RENDERING_DRIVER_D3D12` (2)
    
- `RENDERING_DRIVER_METAL` (3)
    

#### `SystemDir`

- `SYSTEM_DIR_DESKTOP` (0)
    
- `SYSTEM_DIR_DCIM` (1)
    
- `SYSTEM_DIR_DOCUMENTS` (2)
    
- `SYSTEM_DIR_DOWNLOADS` (3)
    
- `SYSTEM_DIR_MOVIES` (4)
    
- `SYSTEM_DIR_MUSIC` (5)
    
- `SYSTEM_DIR_PICTURES` (6)
    
- `SYSTEM_DIR_RINGTONES` (7)
    

#### `StdHandleType`

- `STD_HANDLE_INVALID` (0)
    
- `STD_HANDLE_CONSOLE` (1)
    
- `STD_HANDLE_FILE` (2)
    
- `STD_HANDLE_PIPE` (3)
    
- `STD_HANDLE_UNKNOWN` (4)