mirror of
https://github.com/godotengine/godot-docs-l10n.git
synced 2025-12-31 09:49:22 +03:00
1972 lines
141 KiB
ReStructuredText
1972 lines
141 KiB
ReStructuredText
:github_url: hide
|
||
|
||
.. _class_OS:
|
||
|
||
OS
|
||
==
|
||
|
||
**继承:** :ref:`Object<class_Object>`
|
||
|
||
提供对常见操作系统功能的访问。
|
||
|
||
.. rst-class:: classref-introduction-group
|
||
|
||
描述
|
||
----
|
||
|
||
**OS** 类封装了与主机操作系统通信的最常见功能,例如视频驱动、延时、环境变量、二进制文件的执行、命令行等。
|
||
|
||
\ **注意:**\ 在 Godot 4 中,与窗口管理、剪贴板和 TTS 相关的 **OS** 函数已被移至 :ref:`DisplayServer<class_DisplayServer>` 单例(和 :ref:`Window<class_Window>` 类)。与时间相关的函数已被移除,并且仅在 :ref:`Time<class_Time>` 类中可用。
|
||
|
||
.. rst-class:: classref-introduction-group
|
||
|
||
教程
|
||
----
|
||
|
||
- `操作系统测试演示 <https://godotengine.org/asset-library/asset/2789>`__
|
||
|
||
.. rst-class:: classref-reftable-group
|
||
|
||
属性
|
||
----
|
||
|
||
.. table::
|
||
:widths: auto
|
||
|
||
+-------------------------+---------------------------------------------------------------------------------------------------+-----------+
|
||
| :ref:`bool<class_bool>` | :ref:`delta_smoothing<class_OS_property_delta_smoothing>` | ``true`` |
|
||
+-------------------------+---------------------------------------------------------------------------------------------------+-----------+
|
||
| :ref:`bool<class_bool>` | :ref:`low_processor_usage_mode<class_OS_property_low_processor_usage_mode>` | ``false`` |
|
||
+-------------------------+---------------------------------------------------------------------------------------------------+-----------+
|
||
| :ref:`int<class_int>` | :ref:`low_processor_usage_mode_sleep_usec<class_OS_property_low_processor_usage_mode_sleep_usec>` | ``6900`` |
|
||
+-------------------------+---------------------------------------------------------------------------------------------------+-----------+
|
||
|
||
.. rst-class:: classref-reftable-group
|
||
|
||
方法
|
||
----
|
||
|
||
.. table::
|
||
:widths: auto
|
||
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`add_logger<class_OS_method_add_logger>`\ (\ logger\: :ref:`Logger<class_Logger>`\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`alert<class_OS_method_alert>`\ (\ text\: :ref:`String<class_String>`, title\: :ref:`String<class_String>` = "Alert!"\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`close_midi_inputs<class_OS_method_close_midi_inputs>`\ (\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`crash<class_OS_method_crash>`\ (\ message\: :ref:`String<class_String>`\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`int<class_int>` | :ref:`create_instance<class_OS_method_create_instance>`\ (\ arguments\: :ref:`PackedStringArray<class_PackedStringArray>`\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`int<class_int>` | :ref:`create_process<class_OS_method_create_process>`\ (\ path\: :ref:`String<class_String>`, arguments\: :ref:`PackedStringArray<class_PackedStringArray>`, open_console\: :ref:`bool<class_bool>` = false\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`delay_msec<class_OS_method_delay_msec>`\ (\ msec\: :ref:`int<class_int>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`delay_usec<class_OS_method_delay_usec>`\ (\ usec\: :ref:`int<class_int>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`int<class_int>` | :ref:`execute<class_OS_method_execute>`\ (\ path\: :ref:`String<class_String>`, arguments\: :ref:`PackedStringArray<class_PackedStringArray>`, output\: :ref:`Array<class_Array>` = [], read_stderr\: :ref:`bool<class_bool>` = false, open_console\: :ref:`bool<class_bool>` = false\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Dictionary<class_Dictionary>` | :ref:`execute_with_pipe<class_OS_method_execute_with_pipe>`\ (\ path\: :ref:`String<class_String>`, arguments\: :ref:`PackedStringArray<class_PackedStringArray>`, blocking\: :ref:`bool<class_bool>` = true\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Key<enum_@GlobalScope_Key>` | :ref:`find_keycode_from_string<class_OS_method_find_keycode_from_string>`\ (\ string\: :ref:`String<class_String>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_cache_dir<class_OS_method_get_cache_dir>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_cmdline_args<class_OS_method_get_cmdline_args>`\ (\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_cmdline_user_args<class_OS_method_get_cmdline_user_args>`\ (\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_config_dir<class_OS_method_get_config_dir>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_connected_midi_inputs<class_OS_method_get_connected_midi_inputs>`\ (\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_data_dir<class_OS_method_get_data_dir>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_distribution_name<class_OS_method_get_distribution_name>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`get_entropy<class_OS_method_get_entropy>`\ (\ size\: :ref:`int<class_int>`\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_environment<class_OS_method_get_environment>`\ (\ variable\: :ref:`String<class_String>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_executable_path<class_OS_method_get_executable_path>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_granted_permissions<class_OS_method_get_granted_permissions>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_keycode_string<class_OS_method_get_keycode_string>`\ (\ code\: :ref:`Key<enum_@GlobalScope_Key>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_locale<class_OS_method_get_locale>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_locale_language<class_OS_method_get_locale_language>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`int<class_int>` | :ref:`get_main_thread_id<class_OS_method_get_main_thread_id>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Dictionary<class_Dictionary>` | :ref:`get_memory_info<class_OS_method_get_memory_info>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_model_name<class_OS_method_get_model_name>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_name<class_OS_method_get_name>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`int<class_int>` | :ref:`get_process_exit_code<class_OS_method_get_process_exit_code>`\ (\ pid\: :ref:`int<class_int>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`int<class_int>` | :ref:`get_process_id<class_OS_method_get_process_id>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`int<class_int>` | :ref:`get_processor_count<class_OS_method_get_processor_count>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_processor_name<class_OS_method_get_processor_name>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_restart_on_exit_arguments<class_OS_method_get_restart_on_exit_arguments>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`int<class_int>` | :ref:`get_static_memory_peak_usage<class_OS_method_get_static_memory_peak_usage>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`int<class_int>` | :ref:`get_static_memory_usage<class_OS_method_get_static_memory_usage>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`StdHandleType<enum_OS_StdHandleType>` | :ref:`get_stderr_type<class_OS_method_get_stderr_type>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`StdHandleType<enum_OS_StdHandleType>` | :ref:`get_stdin_type<class_OS_method_get_stdin_type>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`StdHandleType<enum_OS_StdHandleType>` | :ref:`get_stdout_type<class_OS_method_get_stdout_type>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_system_ca_certificates<class_OS_method_get_system_ca_certificates>`\ (\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_system_dir<class_OS_method_get_system_dir>`\ (\ dir\: :ref:`SystemDir<enum_OS_SystemDir>`, shared_storage\: :ref:`bool<class_bool>` = true\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_system_font_path<class_OS_method_get_system_font_path>`\ (\ font_name\: :ref:`String<class_String>`, weight\: :ref:`int<class_int>` = 400, stretch\: :ref:`int<class_int>` = 100, italic\: :ref:`bool<class_bool>` = false\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_system_font_path_for_text<class_OS_method_get_system_font_path_for_text>`\ (\ font_name\: :ref:`String<class_String>`, text\: :ref:`String<class_String>`, locale\: :ref:`String<class_String>` = "", script\: :ref:`String<class_String>` = "", weight\: :ref:`int<class_int>` = 400, stretch\: :ref:`int<class_int>` = 100, italic\: :ref:`bool<class_bool>` = false\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_system_fonts<class_OS_method_get_system_fonts>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_temp_dir<class_OS_method_get_temp_dir>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`int<class_int>` | :ref:`get_thread_caller_id<class_OS_method_get_thread_caller_id>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_unique_id<class_OS_method_get_unique_id>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_user_data_dir<class_OS_method_get_user_data_dir>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_version<class_OS_method_get_version>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`get_version_alias<class_OS_method_get_version_alias>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`PackedStringArray<class_PackedStringArray>` | :ref:`get_video_adapter_driver_info<class_OS_method_get_video_adapter_driver_info>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`has_environment<class_OS_method_has_environment>`\ (\ variable\: :ref:`String<class_String>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`has_feature<class_OS_method_has_feature>`\ (\ tag_name\: :ref:`String<class_String>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`is_debug_build<class_OS_method_is_debug_build>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`is_keycode_unicode<class_OS_method_is_keycode_unicode>`\ (\ code\: :ref:`int<class_int>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`is_process_running<class_OS_method_is_process_running>`\ (\ pid\: :ref:`int<class_int>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`is_restart_on_exit_set<class_OS_method_is_restart_on_exit_set>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`is_sandboxed<class_OS_method_is_sandboxed>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`is_stdout_verbose<class_OS_method_is_stdout_verbose>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`is_userfs_persistent<class_OS_method_is_userfs_persistent>`\ (\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`kill<class_OS_method_kill>`\ (\ pid\: :ref:`int<class_int>`\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`move_to_trash<class_OS_method_move_to_trash>`\ (\ path\: :ref:`String<class_String>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`open_midi_inputs<class_OS_method_open_midi_inputs>`\ (\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`open_with_program<class_OS_method_open_with_program>`\ (\ program_path\: :ref:`String<class_String>`, paths\: :ref:`PackedStringArray<class_PackedStringArray>`\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`PackedByteArray<class_PackedByteArray>` | :ref:`read_buffer_from_stdin<class_OS_method_read_buffer_from_stdin>`\ (\ buffer_size\: :ref:`int<class_int>` = 1024\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`String<class_String>` | :ref:`read_string_from_stdin<class_OS_method_read_string_from_stdin>`\ (\ buffer_size\: :ref:`int<class_int>` = 1024\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`remove_logger<class_OS_method_remove_logger>`\ (\ logger\: :ref:`Logger<class_Logger>`\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`request_permission<class_OS_method_request_permission>`\ (\ name\: :ref:`String<class_String>`\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`bool<class_bool>` | :ref:`request_permissions<class_OS_method_request_permissions>`\ (\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`revoke_granted_permissions<class_OS_method_revoke_granted_permissions>`\ (\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`set_environment<class_OS_method_set_environment>`\ (\ variable\: :ref:`String<class_String>`, value\: :ref:`String<class_String>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`set_restart_on_exit<class_OS_method_set_restart_on_exit>`\ (\ restart\: :ref:`bool<class_bool>`, arguments\: :ref:`PackedStringArray<class_PackedStringArray>` = PackedStringArray()\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`set_thread_name<class_OS_method_set_thread_name>`\ (\ name\: :ref:`String<class_String>`\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`set_use_file_access_save_and_swap<class_OS_method_set_use_file_access_save_and_swap>`\ (\ enabled\: :ref:`bool<class_bool>`\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`shell_open<class_OS_method_shell_open>`\ (\ uri\: :ref:`String<class_String>`\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| :ref:`Error<enum_@GlobalScope_Error>` | :ref:`shell_show_in_file_manager<class_OS_method_shell_show_in_file_manager>`\ (\ file_or_dir_path\: :ref:`String<class_String>`, open_folder\: :ref:`bool<class_bool>` = true\ ) |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
| |void| | :ref:`unset_environment<class_OS_method_unset_environment>`\ (\ variable\: :ref:`String<class_String>`\ ) |const| |
|
||
+---------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
枚举
|
||
----
|
||
|
||
.. _enum_OS_RenderingDriver:
|
||
|
||
.. rst-class:: classref-enumeration
|
||
|
||
enum **RenderingDriver**: :ref:`🔗<enum_OS_RenderingDriver>`
|
||
|
||
.. _class_OS_constant_RENDERING_DRIVER_VULKAN:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`RenderingDriver<enum_OS_RenderingDriver>` **RENDERING_DRIVER_VULKAN** = ``0``
|
||
|
||
Vulkan 渲染驱动。需要支持 Vulkan 1.0,而 Vulkan 1.1 和 1.2 的功能则会在支持时自动使用。
|
||
|
||
.. _class_OS_constant_RENDERING_DRIVER_OPENGL3:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`RenderingDriver<enum_OS_RenderingDriver>` **RENDERING_DRIVER_OPENGL3** = ``1``
|
||
|
||
OpenGL 3 渲染驱动。在桌面平台上使用 OpenGL 3.3 核心配置,在移动设备上使用 OpenGL ES 3.0,在 Web 上使用 WebGL 2.0。
|
||
|
||
.. _class_OS_constant_RENDERING_DRIVER_D3D12:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`RenderingDriver<enum_OS_RenderingDriver>` **RENDERING_DRIVER_D3D12** = ``2``
|
||
|
||
Direct3D 12 渲染驱动。
|
||
|
||
.. _class_OS_constant_RENDERING_DRIVER_METAL:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`RenderingDriver<enum_OS_RenderingDriver>` **RENDERING_DRIVER_METAL** = ``3``
|
||
|
||
Metal 渲染驱动。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _enum_OS_SystemDir:
|
||
|
||
.. rst-class:: classref-enumeration
|
||
|
||
enum **SystemDir**: :ref:`🔗<enum_OS_SystemDir>`
|
||
|
||
.. _class_OS_constant_SYSTEM_DIR_DESKTOP:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`SystemDir<enum_OS_SystemDir>` **SYSTEM_DIR_DESKTOP** = ``0``
|
||
|
||
指桌面目录路径。
|
||
|
||
.. _class_OS_constant_SYSTEM_DIR_DCIM:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`SystemDir<enum_OS_SystemDir>` **SYSTEM_DIR_DCIM** = ``1``
|
||
|
||
指 DCIM(数码相机图像)目录路径。
|
||
|
||
.. _class_OS_constant_SYSTEM_DIR_DOCUMENTS:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`SystemDir<enum_OS_SystemDir>` **SYSTEM_DIR_DOCUMENTS** = ``2``
|
||
|
||
指文档目录路径。
|
||
|
||
.. _class_OS_constant_SYSTEM_DIR_DOWNLOADS:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`SystemDir<enum_OS_SystemDir>` **SYSTEM_DIR_DOWNLOADS** = ``3``
|
||
|
||
指下载目录路径。
|
||
|
||
.. _class_OS_constant_SYSTEM_DIR_MOVIES:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`SystemDir<enum_OS_SystemDir>` **SYSTEM_DIR_MOVIES** = ``4``
|
||
|
||
指电影(或视频)目录路径。
|
||
|
||
.. _class_OS_constant_SYSTEM_DIR_MUSIC:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`SystemDir<enum_OS_SystemDir>` **SYSTEM_DIR_MUSIC** = ``5``
|
||
|
||
指音乐目录路径。
|
||
|
||
.. _class_OS_constant_SYSTEM_DIR_PICTURES:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`SystemDir<enum_OS_SystemDir>` **SYSTEM_DIR_PICTURES** = ``6``
|
||
|
||
指图片目录路径。
|
||
|
||
.. _class_OS_constant_SYSTEM_DIR_RINGTONES:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`SystemDir<enum_OS_SystemDir>` **SYSTEM_DIR_RINGTONES** = ``7``
|
||
|
||
指铃声目录路径。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _enum_OS_StdHandleType:
|
||
|
||
.. rst-class:: classref-enumeration
|
||
|
||
enum **StdHandleType**: :ref:`🔗<enum_OS_StdHandleType>`
|
||
|
||
.. _class_OS_constant_STD_HANDLE_INVALID:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`StdHandleType<enum_OS_StdHandleType>` **STD_HANDLE_INVALID** = ``0``
|
||
|
||
标准 I/O 设备无效。无法用这些标准 I/O 设备接收和发送数据。
|
||
|
||
.. _class_OS_constant_STD_HANDLE_CONSOLE:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`StdHandleType<enum_OS_StdHandleType>` **STD_HANDLE_CONSOLE** = ``1``
|
||
|
||
标准 I/O 设备为控制台。通常发生在从终端运行 Godot 且未进行重定向的场合。在桌面平台上,从编辑器运行 Godot 时也会用于所有标准 I/O 设备。
|
||
|
||
.. _class_OS_constant_STD_HANDLE_FILE:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`StdHandleType<enum_OS_StdHandleType>` **STD_HANDLE_FILE** = ``2``
|
||
|
||
标准 I/O 设备为普通文件。通常发生在终端重定向的场合,例如 ``godot > stdout.txt``\ 、\ ``godot < stdin.txt`` 和 ``godot > stdout_stderr.txt 2>&1``\ 。
|
||
|
||
.. _class_OS_constant_STD_HANDLE_PIPE:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`StdHandleType<enum_OS_StdHandleType>` **STD_HANDLE_PIPE** = ``3``
|
||
|
||
标准 I/O 设备为 FIFO 或管道。通常发生在终端用到了管道的场合,例如 ``echo "Hello" | godot``\ 。
|
||
|
||
.. _class_OS_constant_STD_HANDLE_UNKNOWN:
|
||
|
||
.. rst-class:: classref-enumeration-constant
|
||
|
||
:ref:`StdHandleType<enum_OS_StdHandleType>` **STD_HANDLE_UNKNOWN** = ``4``
|
||
|
||
标准 I/O 设备类型未知。
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
属性说明
|
||
--------
|
||
|
||
.. _class_OS_property_delta_smoothing:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`bool<class_bool>` **delta_smoothing** = ``true`` :ref:`🔗<class_OS_property_delta_smoothing>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_delta_smoothing**\ (\ value\: :ref:`bool<class_bool>`\ )
|
||
- :ref:`bool<class_bool>` **is_delta_smoothing_enabled**\ (\ )
|
||
|
||
如果为 ``true``\ ,则引擎会在每帧之间过滤测量得到的时间增量,并尝试补偿随机变化。这仅适用于垂直同步处于活动状态的系统。
|
||
|
||
\ **注意:**\ 启动时,这与 :ref:`ProjectSettings.application/run/delta_smoothing<class_ProjectSettings_property_application/run/delta_smoothing>` 相同。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_property_low_processor_usage_mode:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`bool<class_bool>` **low_processor_usage_mode** = ``false`` :ref:`🔗<class_OS_property_low_processor_usage_mode>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_low_processor_usage_mode**\ (\ value\: :ref:`bool<class_bool>`\ )
|
||
- :ref:`bool<class_bool>` **is_in_low_processor_usage_mode**\ (\ )
|
||
|
||
如果为 ``true``\ ,则引擎会通过只在需要时刷新屏幕来优化处理器的使用。可以改善移动设备上的电池消耗。
|
||
|
||
\ **注意:**\ 启动时,这与 :ref:`ProjectSettings.application/run/low_processor_mode<class_ProjectSettings_property_application/run/low_processor_mode>` 相同。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_property_low_processor_usage_mode_sleep_usec:
|
||
|
||
.. rst-class:: classref-property
|
||
|
||
:ref:`int<class_int>` **low_processor_usage_mode_sleep_usec** = ``6900`` :ref:`🔗<class_OS_property_low_processor_usage_mode_sleep_usec>`
|
||
|
||
.. rst-class:: classref-property-setget
|
||
|
||
- |void| **set_low_processor_usage_mode_sleep_usec**\ (\ value\: :ref:`int<class_int>`\ )
|
||
- :ref:`int<class_int>` **get_low_processor_usage_mode_sleep_usec**\ (\ )
|
||
|
||
启用低处理器使用模式时帧之间的睡眠时间,以微秒为单位。更高的值将导致更低的 CPU 使用率。另见 :ref:`low_processor_usage_mode<class_OS_property_low_processor_usage_mode>`\ 。
|
||
|
||
\ **注意:**\ 启动时,这与 :ref:`ProjectSettings.application/run/low_processor_mode_sleep_usec<class_ProjectSettings_property_application/run/low_processor_mode_sleep_usec>` 相同。
|
||
|
||
.. rst-class:: classref-section-separator
|
||
|
||
----
|
||
|
||
.. rst-class:: classref-descriptions-group
|
||
|
||
方法说明
|
||
--------
|
||
|
||
.. _class_OS_method_add_logger:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **add_logger**\ (\ logger\: :ref:`Logger<class_Logger>`\ ) :ref:`🔗<class_OS_method_add_logger>`
|
||
|
||
添加自定义日志记录器,拦截内部消息流。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_alert:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **alert**\ (\ text\: :ref:`String<class_String>`, title\: :ref:`String<class_String>` = "Alert!"\ ) :ref:`🔗<class_OS_method_alert>`
|
||
|
||
使用主机平台的实现显示一个模式对话框。引擎执行将被阻塞,直到该对话框被关闭。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_close_midi_inputs:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **close_midi_inputs**\ (\ ) :ref:`🔗<class_OS_method_close_midi_inputs>`
|
||
|
||
关闭系统 MIDI 驱动程序。Godot 将不再接收 :ref:`InputEventMIDI<class_InputEventMIDI>`\ 。另见 :ref:`open_midi_inputs()<class_OS_method_open_midi_inputs>` 和 :ref:`get_connected_midi_inputs()<class_OS_method_get_connected_midi_inputs>`\ 。
|
||
|
||
\ **注意:**\ 该方法在 Linux、macOS、Windows 和 Web 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_crash:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **crash**\ (\ message\: :ref:`String<class_String>`\ ) :ref:`🔗<class_OS_method_crash>`
|
||
|
||
使引擎崩溃(如果在 ``@tool`` 脚本中调用,则使编辑器崩溃)。另见 :ref:`kill()<class_OS_method_kill>`\ 。
|
||
|
||
\ **注意:**\ 该方法应该\ *仅*\ 用于测试系统的崩溃处理器,而不用于任何其他目的。对于一般错误报告,请使用(按优先顺序)\ :ref:`@GDScript.assert()<class_@GDScript_method_assert>`\ 、\ :ref:`@GlobalScope.push_error()<class_@GlobalScope_method_push_error>`\ 、\ :ref:`alert()<class_OS_method_alert>`\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_create_instance:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`int<class_int>` **create_instance**\ (\ arguments\: :ref:`PackedStringArray<class_PackedStringArray>`\ ) :ref:`🔗<class_OS_method_create_instance>`
|
||
|
||
创建一个独立运行的 Godot 新实例。\ ``arguments`` 按给定顺序使用,并以空格分隔。
|
||
|
||
如果进程创建成功,则该方法将返回新的进程 ID,可以使用它来监视该进程(并可能使用 :ref:`kill()<class_OS_method_kill>` 终止它)。如果进程无法创建,则该方法将返回 ``-1``\ 。
|
||
|
||
如果你希望运行不同的进程,请参阅 :ref:`create_process()<class_OS_method_create_process>`\ 。
|
||
|
||
\ **注意:**\ 该方法在 Android、Linux、macOS 和 Windows 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_create_process:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`int<class_int>` **create_process**\ (\ path\: :ref:`String<class_String>`, arguments\: :ref:`PackedStringArray<class_PackedStringArray>`, open_console\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_OS_method_create_process>`
|
||
|
||
创建一个独立于 Godot 运行的新进程。Godot 终止时它也不会终止。\ ``path`` 中指定的路径必须存在,并且是可执行文件或 macOS 的 ``.app`` 捆绑包。将使用平台路径解析。\ ``arguments`` 按给定顺序使用,并以空格分隔。
|
||
|
||
在 Windows 上,如果 ``open_console`` 为 ``true`` 并且该进程是一个控制台应用程序,则会打开新的终端窗口。
|
||
|
||
如果进程创建成功,则该方法将返回新的进程 ID,可以用来监视进程(也可以通过 :ref:`kill()<class_OS_method_kill>` 来终止进程)。否则该方法返回 ``-1``\ 。
|
||
|
||
\ **示例:**\ 运行当前项目的另一个实例:
|
||
|
||
|
||
.. tabs::
|
||
|
||
.. code-tab:: gdscript
|
||
|
||
var pid = OS.create_process(OS.get_executable_path(), [])
|
||
|
||
.. code-tab:: csharp
|
||
|
||
var pid = OS.CreateProcess(OS.GetExecutablePath(), []);
|
||
|
||
|
||
|
||
如果希望运行外部命令并获取结果,请参阅 :ref:`execute()<class_OS_method_execute>`\ 。
|
||
|
||
\ **注意:**\ 该方法在 Android、Linux、macOS 和 Windows 上实现。
|
||
|
||
\ **注意:**\ 在 macOS 上,沙盒应用程序被限制为只能运行嵌入式辅助可执行文件,在导出或系统 .app 捆绑包期间指定,系统 .app 捆绑包将忽略参数。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_delay_msec:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **delay_msec**\ (\ msec\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_OS_method_delay_msec>`
|
||
|
||
将当前线程的执行延迟 ``msec`` 毫秒。\ ``msec`` 必须大于或等于 ``0``\ 。否则,\ :ref:`delay_msec()<class_OS_method_delay_msec>` 不执行任何操作并打印一条错误消息。
|
||
|
||
\ **注意:**\ :ref:`delay_msec()<class_OS_method_delay_msec>` 是一种\ *阻塞*\ 延迟代码执行的方式。要以非阻塞的方式延迟代码执行,请参阅 :ref:`SceneTree.create_timer()<class_SceneTree_method_create_timer>`\ 。使用 :ref:`SceneTreeTimer<class_SceneTreeTimer>` 等待会延迟位于 ``await`` 下方的代码的执行,而不会影响该项目(或编辑器,对于 :ref:`EditorPlugin<class_EditorPlugin>` 和 :ref:`EditorScript<class_EditorScript>`\ )的其余部分。
|
||
|
||
\ **注意:**\ 当在主线程上调用 :ref:`delay_msec()<class_OS_method_delay_msec>` 时,它将冻结项目并阻止它重新绘制和注册输入,直到延迟结束。当使用 :ref:`delay_msec()<class_OS_method_delay_msec>` 作为 :ref:`EditorPlugin<class_EditorPlugin>` 或 :ref:`EditorScript<class_EditorScript>` 的一部分时,它会冻结编辑器但不会冻结当前正在运行的项目(因为项目是一个独立的子进程)。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_delay_usec:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **delay_usec**\ (\ usec\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_OS_method_delay_usec>`
|
||
|
||
将当前线程的执行延迟 ``usec`` 微秒。\ ``usec`` 必须大于或等于 ``0``\ 。否则,\ :ref:`delay_usec()<class_OS_method_delay_usec>` 不执行任何操作并打印一条错误消息。
|
||
|
||
\ **注意:**\ :ref:`delay_usec()<class_OS_method_delay_usec>` 是一种\ *阻塞*\ 延迟代码执行的方式。要以非阻塞的方式延迟代码执行,请参阅 :ref:`SceneTree.create_timer()<class_SceneTree_method_create_timer>`\ 。使用 :ref:`SceneTreeTimer<class_SceneTreeTimer>` 等待会延迟放置在 ``await`` 下方的代码的执行,而不会影响该项目(或编辑器,对于 :ref:`EditorPlugin<class_EditorPlugin>` 和 :ref:`EditorScript<class_EditorScript>`\ )的其余部分。
|
||
|
||
\ **注意:**\ 当在主线程上调用 :ref:`delay_usec()<class_OS_method_delay_usec>` 时,它将冻结项目并阻止它重新绘制和注册输入,直到延迟结束。当使用 :ref:`delay_usec()<class_OS_method_delay_usec>` 作为 :ref:`EditorPlugin<class_EditorPlugin>` 或 :ref:`EditorScript<class_EditorScript>` 的一部分时,它会冻结编辑器但不会冻结当前正在运行的项目(因为项目是一个独立的子进程)。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_execute:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`int<class_int>` **execute**\ (\ path\: :ref:`String<class_String>`, arguments\: :ref:`PackedStringArray<class_PackedStringArray>`, output\: :ref:`Array<class_Array>` = [], read_stderr\: :ref:`bool<class_bool>` = false, open_console\: :ref:`bool<class_bool>` = false\ ) :ref:`🔗<class_OS_method_execute>`
|
||
|
||
以\ *阻塞*\ 方式执行给定进程。\ ``path`` 中指定的文件必须存在且可执行。将使用系统路径解析。\ ``arguments`` 按给定顺序使用,用空格分隔,并用引号包裹。
|
||
|
||
如果提供了 ``output`` 数组,则进程的完整 shell 输出,将作为单个 :ref:`String<class_String>` 元素被追加到 ``output``\ 。如果 ``read_stderr`` 为 ``true``\ ,则标准错误流的输出也会被追加到数组中。
|
||
|
||
在 Windows 上,如果 ``open_console`` 为 ``true`` 并且进程是控制台应用程序,则会打开一个新的终端窗口。
|
||
|
||
该方法返回命令的退出代码,如果进程执行失败,则返回 ``-1``\ 。
|
||
|
||
\ **注意:**\ 主线程将被阻塞,直到执行的命令终止。使用 :ref:`Thread<class_Thread>` 创建一个不会阻塞主线程的独立线程,或者使用 :ref:`create_process()<class_OS_method_create_process>` 创建一个完全独立的进程。
|
||
|
||
例如,要检索工作目录内容的列表:
|
||
|
||
|
||
.. tabs::
|
||
|
||
.. code-tab:: gdscript
|
||
|
||
var output = []
|
||
var exit_code = OS.execute("ls", ["-l", "/tmp"], output)
|
||
|
||
.. code-tab:: csharp
|
||
|
||
Godot.Collections.Array output = [];
|
||
int exitCode = OS.Execute("ls", ["-l", "/tmp"], output);
|
||
|
||
|
||
|
||
如果希望访问内置的 shell 或执行复合命令,则可以调用特定于平台的 shell。例如:
|
||
|
||
|
||
.. tabs::
|
||
|
||
.. code-tab:: gdscript
|
||
|
||
var output = []
|
||
OS.execute("CMD.exe", ["/C", "cd %TEMP% && dir"], output)
|
||
|
||
.. code-tab:: csharp
|
||
|
||
Godot.Collections.Array output = [];
|
||
OS.Execute("CMD.exe", ["/C", "cd %TEMP% && dir"], output);
|
||
|
||
|
||
|
||
\ **注意:**\ 该方法在 Android、Linux、macOS 和 Windows 上实现。
|
||
|
||
\ **注意:**\ 要执行 Windows 命令解释器的内置命令,在 ``path`` 中指定 ``cmd.exe``\ ,将 ``/c`` 作为第一个参数,并将所需的命令作为第二个参数。
|
||
|
||
\ **注意:**\ 要执行 PowerShell 的内置命令,在 ``path`` 中指定 ``powershell.exe``\ ,将 ``-Command`` 作为第一个参数,然后将所需的命令作为第二个参数。
|
||
|
||
\ **注意:**\ 要执行 Unix shell 内置命令,请在 ``path`` 中指定 shell 可执行文件名称,将 ``-c`` 作为第一个参数,并将所需的命令作为第二个参数。
|
||
|
||
\ **注意:**\ 在 macOS 上,沙盒应用程序仅限于运行在导出期间指定的嵌入的辅助可执行文件。
|
||
|
||
\ **注意:**\ 在 Android 上,\ ``dumpsys`` 等系统命令只能在 root 设备上运行。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_execute_with_pipe:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Dictionary<class_Dictionary>` **execute_with_pipe**\ (\ path\: :ref:`String<class_String>`, arguments\: :ref:`PackedStringArray<class_PackedStringArray>`, blocking\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_OS_method_execute_with_pipe>`
|
||
|
||
创建一个独立于 Godot 运行的新进程并重定向 IO。Godot 终止时它也不会终止。\ ``path`` 中指定的路径必须存在,并且是可执行文件或 macOS 的 ``.app`` 捆绑包。将使用平台路径解析。\ ``arguments`` 按给定顺序使用,并以空格分隔。
|
||
|
||
如果 ``blocking`` 为 ``false``\ ,则创建的管道使用非阻塞模式,即读写操作会立即返回。请使用 :ref:`FileAccess.get_error()<class_FileAccess_method_get_error>` 检查最近一次读写操作是否成功。
|
||
|
||
如果无法创建进程,则该方法返回空的 :ref:`Dictionary<class_Dictionary>`\ 。否则该方法会返回一个 :ref:`Dictionary<class_Dictionary>`\ ,包含以下字段:
|
||
|
||
- ``"stdio"`` - 用于访问进程 stdin 和 stdout 管道的 :ref:`FileAccess<class_FileAccess>`\ (读写)。
|
||
|
||
- ``"stderr"`` - 用于访问进程 stderr 管道的 :ref:`FileAccess<class_FileAccess>`\ (只读)。
|
||
|
||
- ``"pid"`` - :ref:`int<class_int>` 形式的进程 ID,可以用来监视进程(也可以通过 :ref:`kill()<class_OS_method_kill>` 来终止进程)。
|
||
|
||
\ **注意:**\ 该方法在 Android、Linux、macOS 和 Windows 上实现。
|
||
|
||
\ **注意:**\ 如果要执行 Windows 命令解释器的内置命令,请在 ``path`` 中指定 ``cmd.exe``\ ,使用 ``/c`` 作为第一个参数并将所需的命令作为第二个参数。
|
||
|
||
\ **注意:**\ 如果要执行 PowerShell 的内置命令,请在 ``path`` 中指定 ``powershell.exe``\ ,使用 ``-Command`` 作为第一个参数并将所需的命令作为第二个参数。
|
||
|
||
\ **注意:**\ 如果要执行 Unix Shell 的内置命令,请在 ``path`` 中指定 shell 可执行文件的名称,使用 ``-c`` 作为第一个参数并将所需的命令作为第二个参数。
|
||
|
||
\ **注意:**\ 在 macOS 上,沙盒应用程序被限制为只能运行嵌入式辅助可执行文件,在导出或系统 .app 捆绑包期间指定,系统 .app 捆绑包将忽略参数。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_find_keycode_from_string:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Key<enum_@GlobalScope_Key>` **find_keycode_from_string**\ (\ string\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_OS_method_find_keycode_from_string>`
|
||
|
||
查找给定字符串对应的键码。返回值等价于 :ref:`Key<enum_@GlobalScope_Key>` 常量。
|
||
|
||
|
||
.. tabs::
|
||
|
||
.. code-tab:: gdscript
|
||
|
||
print(OS.find_keycode_from_string("C")) # 输出 67 (KEY_C)
|
||
print(OS.find_keycode_from_string("Escape")) # 输出 4194305 (KEY_ESCAPE)
|
||
print(OS.find_keycode_from_string("Shift+Tab")) # 输出 37748738 (KEY_MASK_SHIFT | KEY_TAB)
|
||
print(OS.find_keycode_from_string("Unknown")) # 输出 0 (KEY_NONE)
|
||
|
||
.. code-tab:: csharp
|
||
|
||
GD.Print(OS.FindKeycodeFromString("C")); // 输出 C (Key.C)
|
||
GD.Print(OS.FindKeycodeFromString("Escape")); // 输出 Escape (Key.Escape)
|
||
GD.Print(OS.FindKeycodeFromString("Shift+Tab")); // 输出 37748738 (KeyModifierMask.MaskShift | Key.Tab)
|
||
GD.Print(OS.FindKeycodeFromString("Unknown")); // 输出 None (Key.None)
|
||
|
||
|
||
|
||
另见 :ref:`get_keycode_string()<class_OS_method_get_keycode_string>`\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_cache_dir:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_cache_dir**\ (\ ) |const| :ref:`🔗<class_OS_method_get_cache_dir>`
|
||
|
||
根据操作系统的标准返回\ *全局*\ 缓存数据目录。
|
||
|
||
在 Linux/BSD 平台上,可以通过在启动项目之前设置 ``XDG_CACHE_HOME`` 环境变量来覆盖该路径。有关详细信息,请参阅文档中的\ :doc:`《Godot 项目中的文件路径》 <../tutorials/io/data_paths>`\ 。另见 :ref:`get_config_dir()<class_OS_method_get_config_dir>` 和 :ref:`get_data_dir()<class_OS_method_get_data_dir>`\ 。
|
||
|
||
不要与 :ref:`get_user_data_dir()<class_OS_method_get_user_data_dir>` 混淆,后者返回\ *项目特定的*\ 用户数据路径。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_cmdline_args:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`PackedStringArray<class_PackedStringArray>` **get_cmdline_args**\ (\ ) :ref:`🔗<class_OS_method_get_cmdline_args>`
|
||
|
||
Returns the command-line arguments passed to the engine, excluding arguments processed by the engine, such as ``--headless`` and ``--fullscreen``.
|
||
|
||
::
|
||
|
||
# Godot has been executed with the following command:
|
||
# godot --headless --verbose --scene my_scene.tscn --custom
|
||
OS.get_cmdline_args() # Returns ["--scene", "my_scene.tscn", "--custom"]
|
||
|
||
Command-line arguments can be written in any form, including both ``--key value`` and ``--key=value`` forms so they can be properly parsed, as long as custom command-line arguments do not conflict with engine arguments.
|
||
|
||
You can also incorporate environment variables using the :ref:`get_environment()<class_OS_method_get_environment>` method.
|
||
|
||
You can set :ref:`ProjectSettings.editor/run/main_run_args<class_ProjectSettings_property_editor/run/main_run_args>` to define command-line arguments to be passed by the editor when running the project.
|
||
|
||
\ **Example:** Parse command-line arguments into a :ref:`Dictionary<class_Dictionary>` using the ``--key=value`` form for arguments:
|
||
|
||
|
||
.. tabs::
|
||
|
||
.. code-tab:: gdscript
|
||
|
||
var arguments = {}
|
||
for argument in OS.get_cmdline_args():
|
||
if argument.contains("="):
|
||
var key_value = argument.split("=")
|
||
arguments[key_value[0].trim_prefix("--")] = key_value[1]
|
||
else:
|
||
# Options without an argument will be present in the dictionary,
|
||
# with the value set to an empty string.
|
||
arguments[argument.trim_prefix("--")] = ""
|
||
|
||
.. code-tab:: csharp
|
||
|
||
var arguments = new Dictionary<string, string>();
|
||
foreach (var argument in OS.GetCmdlineArgs())
|
||
{
|
||
if (argument.Contains('='))
|
||
{
|
||
string[] keyValue = argument.Split("=");
|
||
arguments[keyValue[0].TrimPrefix("--")] = keyValue[1];
|
||
}
|
||
else
|
||
{
|
||
// Options without an argument will be present in the dictionary,
|
||
// with the value set to an empty string.
|
||
arguments[argument.TrimPrefix("--")] = "";
|
||
}
|
||
}
|
||
|
||
|
||
|
||
\ **Note:** Passing custom user arguments directly is not recommended, as the engine may discard or modify them. Instead, pass the standard UNIX double dash (``--``) and then the custom arguments, which the engine will ignore by design. These can be read via :ref:`get_cmdline_user_args()<class_OS_method_get_cmdline_user_args>`.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_cmdline_user_args:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`PackedStringArray<class_PackedStringArray>` **get_cmdline_user_args**\ (\ ) :ref:`🔗<class_OS_method_get_cmdline_user_args>`
|
||
|
||
Returns the command-line user arguments passed to the engine. User arguments are ignored by the engine and reserved for the user. They are passed after the double dash ``--`` argument. ``++`` may be used when ``--`` is intercepted by another program (such as ``startx``).
|
||
|
||
::
|
||
|
||
# Godot has been executed with the following command:
|
||
# godot --fullscreen --custom -- --level=2 --hardcore
|
||
|
||
OS.get_cmdline_args() # Returns ["--custom"]
|
||
OS.get_cmdline_user_args() # Returns ["--level=2", "--hardcore"]
|
||
|
||
To get arguments passed before ``--`` or ``++``, use :ref:`get_cmdline_args()<class_OS_method_get_cmdline_args>`.
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_config_dir:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_config_dir**\ (\ ) |const| :ref:`🔗<class_OS_method_get_config_dir>`
|
||
|
||
根据操作系统的标准,返回\ *全局*\ 用户配置目录。
|
||
|
||
在 Linux/BSD 平台上,可以通过在启动项目之前设置 ``XDG_CONFIG_HOME`` 环境变量来覆盖该路径。有关详细信息,请参阅文档中的\ :doc:`《Godot 项目中的文件路径》 <../tutorials/io/data_paths>`\ 。另见 :ref:`get_cache_dir()<class_OS_method_get_cache_dir>` 和 :ref:`get_data_dir()<class_OS_method_get_data_dir>`\ 。
|
||
|
||
不要与 :ref:`get_user_data_dir()<class_OS_method_get_user_data_dir>` 混淆,后者返回\ *项目专用的*\ 用户数据路径。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_connected_midi_inputs:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`PackedStringArray<class_PackedStringArray>` **get_connected_midi_inputs**\ (\ ) :ref:`🔗<class_OS_method_get_connected_midi_inputs>`
|
||
|
||
如果存在已连接的 MIDI 设备,则返回设备名称的数组。如果尚未使用 :ref:`open_midi_inputs()<class_OS_method_open_midi_inputs>` 初始化系统 MIDI 驱动,则返回空数组。另见 :ref:`close_midi_inputs()<class_OS_method_close_midi_inputs>`\ 。
|
||
|
||
\ **注意:**\ 该方法在 Linux、macOS、Windows 和 Web 上实现。
|
||
|
||
\ **注意:**\ 在 Web 平台上,浏览器需要支持 Web MIDI。\ `目前 <https://caniuse.com/midi>`__\ 主流浏览器中除了 Safari 都支持。
|
||
|
||
\ **注意:**\ 在 Web 平台上,需要在浏览器中授权才能使用 MIDI 输入。权限请求会在调用 :ref:`open_midi_inputs()<class_OS_method_open_midi_inputs>` 时进行。用户接受权限请求后浏览器才会处理 MIDI 输入。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_data_dir:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_data_dir**\ (\ ) |const| :ref:`🔗<class_OS_method_get_data_dir>`
|
||
|
||
根据操作系统的标准返回\ *全局*\ 用户数据目录。
|
||
|
||
在 Linux/BSD 平台上,可以通过在启动项目之前设置 ``XDG_DATA_HOME`` 环境变量来覆盖该路径。有关详细信息,请参阅文档中的\ :doc:`《Godot 项目中的文件路径》 <../tutorials/io/data_paths>`\ 。另见 :ref:`get_cache_dir()<class_OS_method_get_cache_dir>` 和 :ref:`get_config_dir()<class_OS_method_get_config_dir>`\ 。
|
||
|
||
不要与 :ref:`get_user_data_dir()<class_OS_method_get_user_data_dir>` 混淆,后者返回\ *项目专用的*\ 用户数据路径。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_distribution_name:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_distribution_name**\ (\ ) |const| :ref:`🔗<class_OS_method_get_distribution_name>`
|
||
|
||
返回 Linux 和 BSD 平台的发行版名称(例如 “Ubuntu”、“Manjaro”、“OpenBSD” 等)。
|
||
|
||
对于原生 Android 系统,返回与 :ref:`get_name()<class_OS_method_get_name>` 相同的值,但对于 “LineageOS” 等流行的 Android 派生系统,尝试返回自定义 ROM 名称。
|
||
|
||
对于其他平台,返回与 :ref:`get_name()<class_OS_method_get_name>` 相同的值。
|
||
|
||
\ **注意:**\ Web 平台上不支持这个方法。返回的是空字符串。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_entropy:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`PackedByteArray<class_PackedByteArray>` **get_entropy**\ (\ size\: :ref:`int<class_int>`\ ) :ref:`🔗<class_OS_method_get_entropy>`
|
||
|
||
生成填充了密码学安全随机字节的 :ref:`PackedByteArray<class_PackedByteArray>`\ ,大小为 ``size``\ 。
|
||
|
||
\ **注意:**\ 在大部分平台上,使用该方法生成大量字节可能会造成锁定、让熵的质量变低。大多数情况下请使用 :ref:`Crypto.generate_random_bytes()<class_Crypto_method_generate_random_bytes>`\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_environment:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_environment**\ (\ variable\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_OS_method_get_environment>`
|
||
|
||
返回给定环境变量的值,如果 ``variable`` 不存在,则返回一串空字符串。
|
||
|
||
\ **注意:**\ 请仔细检查 ``variable`` 的大小写。环境变量名称在除 Windows 之外的所有平台上都区分大小写。
|
||
|
||
\ **注意:**\ 在 macOS 上,应用程序无权访问 shell 环境变量。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_executable_path:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_executable_path**\ (\ ) |const| :ref:`🔗<class_OS_method_get_executable_path>`
|
||
|
||
返回当前引擎可执行文件的文件路径。
|
||
|
||
\ **注意:**\ 如果想要在 macOS 上运行新的 Godot 实例,请始终使用 :ref:`create_instance()<class_OS_method_create_instance>`\ ,不要依赖可执行文件的路径。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_granted_permissions:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`PackedStringArray<class_PackedStringArray>` **get_granted_permissions**\ (\ ) |const| :ref:`🔗<class_OS_method_get_granted_permissions>`
|
||
|
||
在 Android 设备上:返回已授予的危险权限列表。
|
||
|
||
在 macOS 上:返回已授予权限列表以及应用程序可访问的用户选择的文件夹列表(仅限沙盒应用程序)。使用原生文件对话框请求文件夹访问权限。
|
||
|
||
在 iOS、visionOS 上:返回已授予权限列表。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_keycode_string:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_keycode_string**\ (\ code\: :ref:`Key<enum_@GlobalScope_Key>`\ ) |const| :ref:`🔗<class_OS_method_get_keycode_string>`
|
||
|
||
以 :ref:`String<class_String>` 的形式返回给定的键码。
|
||
|
||
|
||
.. tabs::
|
||
|
||
.. code-tab:: gdscript
|
||
|
||
print(OS.get_keycode_string(KEY_C)) # 输出 "C"
|
||
print(OS.get_keycode_string(KEY_ESCAPE)) # 输出 "Escape"
|
||
print(OS.get_keycode_string(KEY_MASK_SHIFT | KEY_TAB)) # 输出 "Shift+Tab"
|
||
|
||
.. code-tab:: csharp
|
||
|
||
GD.Print(OS.GetKeycodeString(Key.C)); // 输出 "C"
|
||
GD.Print(OS.GetKeycodeString(Key.Escape)); // 输出 "Escape"
|
||
GD.Print(OS.GetKeycodeString((Key)KeyModifierMask.MaskShift | Key.Tab)); // 输出 "Shift+Tab"
|
||
|
||
|
||
|
||
另见 :ref:`find_keycode_from_string()<class_OS_method_find_keycode_from_string>`\ 、\ :ref:`InputEventKey.keycode<class_InputEventKey_property_keycode>`\ 、\ :ref:`InputEventKey.get_keycode_with_modifiers()<class_InputEventKey_method_get_keycode_with_modifiers>`\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_locale:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_locale**\ (\ ) |const| :ref:`🔗<class_OS_method_get_locale>`
|
||
|
||
以 ``language_Script_COUNTRY_VARIANT@extra`` 形式的 :ref:`String<class_String>` 返回主机操作系统区域设置。\ ``language`` 之后的每个子字符串都是可选的,并且可能不存在。
|
||
|
||
- ``language`` - 2 个或 3 个字母的\ `语言代码 <https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes>`__\ ,小写。
|
||
|
||
- ``Script`` - 4 个字母的\ `文字代码 <https://en.wikipedia.org/wiki/ISO_15924>`__\ ,首字母大写。
|
||
|
||
- ``COUNTRY`` - 2 个或 3 个字母的\ `国家地区代码 <https://en.wikipedia.org/wiki/ISO_3166-1>`__\ ,大写。
|
||
|
||
- ``VARIANT`` - 语言变体,地区和排序顺序。变体可以有任意数量的带下划线的关键字。
|
||
|
||
- ``extra`` - 分号分隔的附加关键字列表。这可能包含货币、日历、排序顺序和编号系统信息。
|
||
|
||
如果你只需要语言代码而不是操作系统中完全指定的区域设置,则可以使用 :ref:`get_locale_language()<class_OS_method_get_locale_language>`\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_locale_language:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_locale_language**\ (\ ) |const| :ref:`🔗<class_OS_method_get_locale_language>`
|
||
|
||
将主机操作系统区域设置的 2 或 3 个字母的\ `语言代码 <https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes>`__\ 作为字符串返回,该字符串应在所有平台上保持一致。这相当于提取 :ref:`get_locale()<class_OS_method_get_locale>` 字符串的 ``language`` 部分。
|
||
|
||
当你不需要有关国家/地区代码或变体的附加信息时,这可用于将完全指定的区域设置字符串缩小为“通用”语言代码。例如,对于使用 ``fr_CA`` 语言环境的加拿大法语用户,这将返回 ``fr``\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_main_thread_id:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`int<class_int>` **get_main_thread_id**\ (\ ) |const| :ref:`🔗<class_OS_method_get_main_thread_id>`
|
||
|
||
返回主线程的 ID。请参阅 :ref:`get_thread_caller_id()<class_OS_method_get_thread_caller_id>`\ 。
|
||
|
||
\ **注意:**\ 线程 ID 不是确定的,也许会在应用程序重新启动时被重复使用。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_memory_info:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Dictionary<class_Dictionary>` **get_memory_info**\ (\ ) |const| :ref:`🔗<class_OS_method_get_memory_info>`
|
||
|
||
返回一个包含有关当前内存的信息的 :ref:`Dictionary<class_Dictionary>`\ ,其中包含以下条目:
|
||
|
||
- ``"physical"`` - 可用物理内存的总大小,单位为字节。这个值可能比实际的物理内存略小,因为计算时不含由内核以及各种设备所保留的内存。
|
||
|
||
- ``"free"`` - 无需磁盘访问或其他昂贵操作即可立即分配的物理内存大小,单位为字节。进程也许能够分配更多的物理内存,但是这种操作需要将不活跃的内存页移动至磁盘,这可能会很昂贵。
|
||
|
||
- ``"available"`` - 无需扩展交换文件即可分配的内存大小,单位为字节。该值包括物理内存和交换空间。
|
||
|
||
- ``"stack"`` - 当前线程的栈大小,单位为字节。
|
||
|
||
\ **注意:**\ 每个条目的值在其未知时可能是 ``-1``\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_model_name:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_model_name**\ (\ ) |const| :ref:`🔗<class_OS_method_get_model_name>`
|
||
|
||
返回当前设备的型号名称。
|
||
|
||
\ **注意:**\ 该方法在 Android、iOS、macOS 和 Windows 上实现。在不支持的平台上返回 ``"GenericDevice"``\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_name:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_name**\ (\ ) |const| :ref:`🔗<class_OS_method_get_name>`
|
||
|
||
返回主机平台的名称。
|
||
|
||
- 在 Windows 上为 ``"Windows"``\ 。
|
||
|
||
- 在 macOS 上为 ``"macOS"``\ 。
|
||
|
||
- 在基于 Linux 的操作系统上为 ``"Linux"``\ 。
|
||
|
||
- 在基于 BSD 的操作系统上为 ``"FreeBSD"``\ 、\ ``"NetBSD"``\ 、\ ``"OpenBSD"``, 会使用 ``"BSD"`` 作为回退方案。
|
||
|
||
- 在 Android 上为 ``"Android"``\ 。
|
||
|
||
- 在 iOS 上为 ``"iOS"``\ 。
|
||
|
||
- 在 Web 上为 ``"Web"``\ 。
|
||
|
||
\ **注意:**\ 自定义构建的引擎可能支持其他平台,例如游戏主机,可能返回其他值。
|
||
|
||
|
||
.. tabs::
|
||
|
||
.. code-tab:: gdscript
|
||
|
||
match OS.get_name():
|
||
"Windows":
|
||
print("Welcome to Windows!")
|
||
"macOS":
|
||
print("Welcome to macOS!")
|
||
"Linux", "FreeBSD", "NetBSD", "OpenBSD", "BSD":
|
||
print("Welcome to Linux/BSD!")
|
||
"Android":
|
||
print("Welcome to Android!")
|
||
"iOS":
|
||
print("Welcome to iOS!")
|
||
"Web":
|
||
print("Welcome to the Web!")
|
||
|
||
.. code-tab:: csharp
|
||
|
||
switch (OS.GetName())
|
||
{
|
||
case "Windows":
|
||
GD.Print("Welcome to Windows");
|
||
break;
|
||
case "macOS":
|
||
GD.Print("Welcome to macOS!");
|
||
break;
|
||
case "Linux":
|
||
case "FreeBSD":
|
||
case "NetBSD":
|
||
case "OpenBSD":
|
||
case "BSD":
|
||
GD.Print("Welcome to Linux/BSD!");
|
||
break;
|
||
case "Android":
|
||
GD.Print("Welcome to Android!");
|
||
break;
|
||
case "iOS":
|
||
GD.Print("Welcome to iOS!");
|
||
break;
|
||
case "Web":
|
||
GD.Print("Welcome to the Web!");
|
||
break;
|
||
}
|
||
|
||
|
||
|
||
\ **注意:**\ 在 Web 平台上,仍然可以通过功能标签确定主机平台的操作系统。请参阅 :ref:`has_feature()<class_OS_method_has_feature>`\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_process_exit_code:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`int<class_int>` **get_process_exit_code**\ (\ pid\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_OS_method_get_process_exit_code>`
|
||
|
||
在已启动进程运行结束后返回其退出码(见 :ref:`is_process_running()<class_OS_method_is_process_running>`\ )。
|
||
|
||
如果 ``pid`` 不是已启动子进程的 PID 或者该进程仍在运行,亦或当前平台未实现该方法,则返回 ``-1``\ 。
|
||
|
||
\ **注意:**\ 如果 ``pid`` 是 macOS 捆绑包 App 进程,则返回 ``-1``\ 。
|
||
|
||
\ **注意:**\ 该方法在 Android、Linux、macOS 和 Windows 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_process_id:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`int<class_int>` **get_process_id**\ (\ ) |const| :ref:`🔗<class_OS_method_get_process_id>`
|
||
|
||
返回主机用来唯一标识该应用程序的编号。
|
||
|
||
\ **注意:**\ 该方法在 Web 上始终返回 ``0``\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_processor_count:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`int<class_int>` **get_processor_count**\ (\ ) |const| :ref:`🔗<class_OS_method_get_processor_count>`
|
||
|
||
返回主机的\ *逻辑* CPU 核心数。对于启用了超线程的 CPU,这个数会比\ *物理* CPU 核心数大。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_processor_name:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_processor_name**\ (\ ) |const| :ref:`🔗<class_OS_method_get_processor_name>`
|
||
|
||
返回主机上 CPU 型号的全名(例如 ``"Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz"``\ )。
|
||
|
||
\ **注意:**\ 该方法仅在 Windows、macOS、Linux 和 iOS 上实现。在 Android 和 Web 上,\ :ref:`get_processor_name()<class_OS_method_get_processor_name>` 返回空字符串。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_restart_on_exit_arguments:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`PackedStringArray<class_PackedStringArray>` **get_restart_on_exit_arguments**\ (\ ) |const| :ref:`🔗<class_OS_method_get_restart_on_exit_arguments>`
|
||
|
||
返回当项目使用 :ref:`set_restart_on_exit()<class_OS_method_set_restart_on_exit>` 自动重新启动时,将使用的命令行参数列表。另见 :ref:`is_restart_on_exit_set()<class_OS_method_is_restart_on_exit_set>`\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_static_memory_peak_usage:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`int<class_int>` **get_static_memory_peak_usage**\ (\ ) |const| :ref:`🔗<class_OS_method_get_static_memory_peak_usage>`
|
||
|
||
返回使用的静态内存的最大数量。仅适用于调试版本。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_static_memory_usage:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`int<class_int>` **get_static_memory_usage**\ (\ ) |const| :ref:`🔗<class_OS_method_get_static_memory_usage>`
|
||
|
||
返回程序正在使用的静态内存量,以字节为单位。仅适用于调试版本。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_stderr_type:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`StdHandleType<enum_OS_StdHandleType>` **get_stderr_type**\ (\ ) |const| :ref:`🔗<class_OS_method_get_stderr_type>`
|
||
|
||
返回标准错误设备的类型。
|
||
|
||
\ **注意:**\ 该方法在 Linux、macOS、Windows 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_stdin_type:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`StdHandleType<enum_OS_StdHandleType>` **get_stdin_type**\ (\ ) |const| :ref:`🔗<class_OS_method_get_stdin_type>`
|
||
|
||
返回标准输入设备的类型。
|
||
|
||
\ **注意:**\ 该方法在 Linux、macOS、Windows 上实现。
|
||
|
||
\ **注意:**\ 在导出的 Windows 构建中,要访问标准输入请运行控制台包装可执行文件。如果需要具有完整控制台支持的独立可执行文件,请使用带有 ``windows_subsystem=console`` 标志进行编译的自定义构建。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_stdout_type:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`StdHandleType<enum_OS_StdHandleType>` **get_stdout_type**\ (\ ) |const| :ref:`🔗<class_OS_method_get_stdout_type>`
|
||
|
||
返回标准输出设备的类型。
|
||
|
||
\ **注意:**\ 该方法在 Linux、macOS、Windows 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_system_ca_certificates:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_system_ca_certificates**\ (\ ) :ref:`🔗<class_OS_method_get_system_ca_certificates>`
|
||
|
||
返回操作系统信任的认证机构列表,是 PEM 格式的证书相连后的字符串。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_system_dir:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_system_dir**\ (\ dir\: :ref:`SystemDir<enum_OS_SystemDir>`, shared_storage\: :ref:`bool<class_bool>` = true\ ) |const| :ref:`🔗<class_OS_method_get_system_dir>`
|
||
|
||
返回不同平台上常用文件夹的路径,如 ``dir`` 所定义。有关可用位置,请参阅 :ref:`SystemDir<enum_OS_SystemDir>` 常量。
|
||
|
||
\ **注意:**\ 这个方法在 Android、Linux、macOS 和 Windows 上实现。
|
||
|
||
\ **注意:**\ 共享存储在 Android 上实现,如果 ``shared_storage`` 为 ``true``\ ,则允许区分应用程序特定目录和共享目录。共享目录在 Android 上有额外的限制。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_system_font_path:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_system_font_path**\ (\ font_name\: :ref:`String<class_String>`, weight\: :ref:`int<class_int>` = 400, stretch\: :ref:`int<class_int>` = 100, italic\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_OS_method_get_system_font_path>`
|
||
|
||
返回带有 ``font_name`` 和样式的系统字体文件的路径。如果未找到匹配的字体,则返回空字符串。
|
||
|
||
下列别名可用于请求默认字体:无衬线“sans-serif”、有衬线“serif”、等宽“monospace”、手写体“cursive”、花体“fantasy”。
|
||
|
||
\ **注意:**\ 如果请求的样式不可用,则返回的字体可能具有不同的样式。
|
||
|
||
\ **注意:**\ 该方法在 Android、iOS、Linux、macOS、Windows 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_system_font_path_for_text:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`PackedStringArray<class_PackedStringArray>` **get_system_font_path_for_text**\ (\ font_name\: :ref:`String<class_String>`, text\: :ref:`String<class_String>`, locale\: :ref:`String<class_String>` = "", script\: :ref:`String<class_String>` = "", weight\: :ref:`int<class_int>` = 400, stretch\: :ref:`int<class_int>` = 100, italic\: :ref:`bool<class_bool>` = false\ ) |const| :ref:`🔗<class_OS_method_get_system_font_path_for_text>`
|
||
|
||
返回系统替换字体文件路径的数组,这些字体与名称为 ``font_name`` 并且其他风格也相符的字体相近,可用于指定的文本、区域设置以及文字。如果没有相匹配的字体,则返回空数组。
|
||
|
||
下列别名可用于请求默认字体:无衬线“sans-serif”、有衬线“serif”、等宽“monospace”、手写体“cursive”、花体“fantasy”。
|
||
|
||
\ **注意:**\ 根据操作系统的不同,无法保证任何返回的字体都适合渲染指定的文本。应该按照返回的顺序加载并检查字体,选用第一个合适的字体。
|
||
|
||
\ **注意:**\ 如果没有请求的风格,或者属于不同的字体家族,则可能返回不同风格的字体。
|
||
|
||
\ **注意:**\ 该方法在 Android、iOS、Linux、macOS、Windows 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_system_fonts:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`PackedStringArray<class_PackedStringArray>` **get_system_fonts**\ (\ ) |const| :ref:`🔗<class_OS_method_get_system_fonts>`
|
||
|
||
返回可用的字体家族名称列表。
|
||
|
||
\ **注意:**\ 该方法在 Android、iOS、Linux、macOS、Windows 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_temp_dir:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_temp_dir**\ (\ ) |const| :ref:`🔗<class_OS_method_get_temp_dir>`
|
||
|
||
返回\ *全局*\ 临时数据目录,遵循操作系统标准。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_thread_caller_id:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`int<class_int>` **get_thread_caller_id**\ (\ ) |const| :ref:`🔗<class_OS_method_get_thread_caller_id>`
|
||
|
||
返回当前线程的 ID。这可用于日志,以简化多线程应用程序的调试。
|
||
|
||
\ **注意:**\ 线程 ID 不是确定的,也许会在应用程序重新启动时被重复使用。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_unique_id:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_unique_id**\ (\ ) |const| :ref:`🔗<class_OS_method_get_unique_id>`
|
||
|
||
返回特定于该设备的一个字符串。
|
||
|
||
\ **注意:**\ 如果用户重新安装操作系统、升级操作系统或修改硬件,则该字符串可能会更改,恕不另行通知。这意味着它通常不应用于加密持久数据,因为在意外的 ID 更改会使之前保存的数据变得无法访问。返回的字符串也可能会被外部程序伪造,因此出于安全目的,请勿依赖该方法返回的字符串。
|
||
|
||
\ **注意:**\ 在 Web 上,返回空字符串并生成错误,因为出于安全考虑无法实现该方法。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_user_data_dir:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_user_data_dir**\ (\ ) |const| :ref:`🔗<class_OS_method_get_user_data_dir>`
|
||
|
||
返回写入用户数据的绝对目录路径(Godot 中的 ``user://`` 目录)。该路径取决于项目名称和 :ref:`ProjectSettings.application/config/use_custom_user_dir<class_ProjectSettings_property_application/config/use_custom_user_dir>`\ 。
|
||
|
||
- 在 Windows 上,这是 ``%AppData%\Godot\app_userdata\[project_name]``\ ;如果已设置 ``use_custom_user_dir``\ ,则为 ``%AppData%\[custom_name]``\ 。\ ``%AppData%`` 扩展为 ``%UserProfile%\AppData\Roaming``\ 。
|
||
|
||
- 在 macOS 上,这是 ``~/Library/Application Support/Godot/app_userdata/[project_name]``\ ;如果已设置 ``use_custom_user_dir``\ ,则为 ``~/Library/Application Support/[custom_name]`` 。
|
||
|
||
- 在 Linux 和 BSD 上,这是 ``~/.local/share/godot/app_userdata/[project_name]``\ ;如果已设置 ``use_custom_user_dir``\ ,则为 ``~/.local/share/[custom_name]``\ 。
|
||
|
||
- 在 Android 和 iOS 上,这是内部存储或外部存储中的沙盒目录,具体取决于用户的配置。
|
||
|
||
- 在 Web 上,这是由浏览器管理的虚拟目录。
|
||
|
||
如果项目名称为空,则 ``[project_name]`` 将回退为 ``[unnamed project]``\ 。
|
||
|
||
请勿与 :ref:`get_data_dir()<class_OS_method_get_data_dir>` 混淆,后者返回的是\ *全局*\ (非项目特定的)用户主目录。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_version:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_version**\ (\ ) |const| :ref:`🔗<class_OS_method_get_version>`
|
||
|
||
返回操作系统的确切生产和构建版本。这与营销中使用的品牌版本不同。这有助于区分操作系统的不同版本,包括次要版本、内部版本和自定义版本。
|
||
|
||
- 对于 Windows,返回主要和次要版本,以及构建号。例如对于 Windows 10 版本,返回的字符串可能看起来像 ``10.0.9926``\ 。
|
||
|
||
- 对于滚动发行版,例如 Arch Linux,会返回一个空字符串。
|
||
|
||
- 对于 macOS 和 iOS,会返回主要和次要版本,以及补丁号。
|
||
|
||
- 对于 Android,会返回 SDK 版本和增量构建号。如果是自定义的 ROM,将会尝试返回其版本。
|
||
|
||
\ **注意:**\ 该方法在 web 平台上不被支持。它将返回一个空字符串。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_version_alias:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **get_version_alias**\ (\ ) |const| :ref:`🔗<class_OS_method_get_version_alias>`
|
||
|
||
返回用于营销的品牌版本,后接构建号(Windows 上)、版本号(macOS 上)或 SDK 版本和小构建号(Android 上)。例如 ``11 (build 22000)``\ 、\ ``Sequoia (15.0.0)``\ 、\ ``15 (SDK 35 build abc528-11988f)``\ 。
|
||
|
||
这个值可以附加到 :ref:`get_name()<class_OS_method_get_name>` 后面,获取该操作系统完整、人类可读的操作系统名称和版本组合。“24H2”等 Windows 功能更新不包含在结果字符串中,但会识别 Windows Server(例如 ``2025 (build 26100)`` 表示 Windows Server 2025)。
|
||
|
||
\ **注意:**\ 该方法仅在 Windows、macOS、Android 上支持。在其他操作系统上返回值与 :ref:`get_version()<class_OS_method_get_version>` 相同。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_get_video_adapter_driver_info:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`PackedStringArray<class_PackedStringArray>` **get_video_adapter_driver_info**\ (\ ) |const| :ref:`🔗<class_OS_method_get_video_adapter_driver_info>`
|
||
|
||
返回用户当前激活的显卡的视频适配器驱动程序名称和版本,返回为一个 :ref:`PackedStringArray<class_PackedStringArray>`\ 。另见 :ref:`RenderingServer.get_video_adapter_api_version()<class_RenderingServer_method_get_video_adapter_api_version>`\ 。
|
||
|
||
第一个元素保存驱动程序的名称,如 ``nvidia``\ 、\ ``amdgpu`` 等。
|
||
|
||
第二个元素保存驱动程序的版本。例如 Linux/BSD 平台上的 ``nvidia`` 驱动程序,其版本格式为 ``510.85.02``\ 。对于 Windows,其驱动程序的格式是 ``31.0.15.1659``\ 。
|
||
|
||
\ **注意:**\ 该方法仅在 Linux/BSD 和 Windows 上不以无头模式运行时才受支持。在其他平台上,它返回一个空数组。
|
||
|
||
\ **注意:**\ 会话中首次调用该方法时会比较慢,可能会花费好几秒,具体取决于操作系统和硬件。在主线程上调用时会阻塞,因此建议使用 :ref:`Thread<class_Thread>` 在独立线程中调用。这样引擎就可以一边收集信息一边运行了。不过 :ref:`get_video_adapter_driver_info()<class_OS_method_get_video_adapter_driver_info>` *不是*\ 线程安全的,因此不应该在同一时间使用多个线程调用。
|
||
|
||
|
||
.. tabs::
|
||
|
||
.. code-tab:: gdscript
|
||
|
||
var thread = Thread.new()
|
||
|
||
func _ready():
|
||
thread.start(
|
||
func():
|
||
var driver_info = OS.get_video_adapter_driver_info()
|
||
if not driver_info.is_empty():
|
||
print("驱动: %s %s" % [driver_info[0], driver_info[1]])
|
||
else:
|
||
print("驱动:(未知)")
|
||
)
|
||
|
||
func _exit_tree():
|
||
thread.wait_to_finish()
|
||
|
||
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_has_environment:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **has_environment**\ (\ variable\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_OS_method_has_environment>`
|
||
|
||
如果名称为 ``variable`` 的环境变量存在,则返回 ``true``\ 。
|
||
|
||
\ **注意:**\ 请仔细检查 ``variable`` 的大小写。环境变量名称在除 Windows 之外的所有平台上都区分大小写。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_has_feature:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **has_feature**\ (\ tag_name\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_OS_method_has_feature>`
|
||
|
||
如果当前运行的实例支持给定功能标签的功能,则返回 ``true``\ ,具体取决于平台、构建等。可用于检查当前是否正在运行调试构建,是否在某个平台或架构上,等等。详见\ :doc:`《功能标签》 <../tutorials/export/feature_tags>`\ 文档。
|
||
|
||
\ **注意:**\ 标签名称区分大小写。
|
||
|
||
\ **注意:**\ 在 Web 平台上,会定义 ``web_android``\ 、\ ``web_ios``\ 、\ ``web_linuxbsd``\ 、\ ``web_macos``\ 、\ ``web_windows`` 的其中之一,表示宿主平台。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_is_debug_build:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **is_debug_build**\ (\ ) |const| :ref:`🔗<class_OS_method_is_debug_build>`
|
||
|
||
如果用于运行项目的 Godot 二进制文件是\ *调试*\ 导出模板,或是在编辑器中运行时,则返回 ``true``\ 。
|
||
|
||
如果用于运行项目的 Godot 二进制文件是\ *发布*\ 导出模板,则返回 ``false``\ 。
|
||
|
||
\ **注意:**\ 要检查用于运行项目的 Godot 二进制文件是否是导出模板(调试或发布),请改用 ``OS.has_feature("template")``\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_is_keycode_unicode:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **is_keycode_unicode**\ (\ code\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_OS_method_is_keycode_unicode>`
|
||
|
||
如果输入的键码对应 Unicode 字符,则返回 ``true``\ 。键码列表见 :ref:`Key<enum_@GlobalScope_Key>` 常量。
|
||
|
||
|
||
.. tabs::
|
||
|
||
.. code-tab:: gdscript
|
||
|
||
print(OS.is_keycode_unicode(KEY_G)) # 输出 true
|
||
print(OS.is_keycode_unicode(KEY_KP_4)) # 输出 true
|
||
print(OS.is_keycode_unicode(KEY_TAB)) # 输出 false
|
||
print(OS.is_keycode_unicode(KEY_ESCAPE)) # 输出 false
|
||
|
||
.. code-tab:: csharp
|
||
|
||
GD.Print(OS.IsKeycodeUnicode((long)Key.G)); // 输出 True
|
||
GD.Print(OS.IsKeycodeUnicode((long)Key.Kp4)); // 输出 True
|
||
GD.Print(OS.IsKeycodeUnicode((long)Key.Tab)); // 输出 False
|
||
GD.Print(OS.IsKeycodeUnicode((long)Key.Escape)); // 输出 False
|
||
|
||
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_is_process_running:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **is_process_running**\ (\ pid\: :ref:`int<class_int>`\ ) |const| :ref:`🔗<class_OS_method_is_process_running>`
|
||
|
||
如果该子进程 ID(\ ``pid``\ )仍在运行,则返回 ``true``\ ;如果它已终止,则返回 ``false``\ 。\ ``pid`` 必须是从 :ref:`create_process()<class_OS_method_create_process>` 生成的有效 ID。
|
||
|
||
\ **注意:**\ 该方法在 Android、iOS、Linux、macOS 和 Windows 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_is_restart_on_exit_set:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **is_restart_on_exit_set**\ (\ ) |const| :ref:`🔗<class_OS_method_is_restart_on_exit_set>`
|
||
|
||
如果项目因任何原因退出时将自动重新启动,则返回 ``true``\ ,否则返回 ``false``\ 。另见 :ref:`set_restart_on_exit()<class_OS_method_set_restart_on_exit>` 和 :ref:`get_restart_on_exit_arguments()<class_OS_method_get_restart_on_exit_arguments>`\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_is_sandboxed:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **is_sandboxed**\ (\ ) |const| :ref:`🔗<class_OS_method_is_sandboxed>`
|
||
|
||
如果该应用程序在沙箱中运行,则返回 ``true``\ 。
|
||
|
||
\ **注意:**\ 该方法仅在 macOS 和 Linux 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_is_stdout_verbose:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **is_stdout_verbose**\ (\ ) |const| :ref:`🔗<class_OS_method_is_stdout_verbose>`
|
||
|
||
如果引擎是使用 ``--verbose`` 或 ``-v`` 命令行参数执行的,或者如果 :ref:`ProjectSettings.debug/settings/stdout/verbose_stdout<class_ProjectSettings_property_debug/settings/stdout/verbose_stdout>` 为 ``true``\ ,则返回 ``true``\ 。另见 :ref:`@GlobalScope.print_verbose()<class_@GlobalScope_method_print_verbose>`\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_is_userfs_persistent:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **is_userfs_persistent**\ (\ ) |const| :ref:`🔗<class_OS_method_is_userfs_persistent>`
|
||
|
||
如果 ``user://`` 文件系统是持久的,即玩家退出并再次开始游戏后其状态相同,则返回 ``true``\ 。与 Web 平台相关,这种持久性可能不可用。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_kill:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Error<enum_@GlobalScope_Error>` **kill**\ (\ pid\: :ref:`int<class_int>`\ ) :ref:`🔗<class_OS_method_kill>`
|
||
|
||
杀死(终止)由给定进程 ID(\ ``pid``\ )标识的进程,例如由 :ref:`execute()<class_OS_method_execute>` 在非阻塞模式下返回的那个进程 ID。另见 :ref:`crash()<class_OS_method_crash>`\ 。
|
||
|
||
\ **注意:**\ 该方法也可用于杀死不是由引擎产生的进程。
|
||
|
||
\ **注意:**\ 该方法在 Android、iOS、Linux、macOS 和 Windows 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_move_to_trash:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Error<enum_@GlobalScope_Error>` **move_to_trash**\ (\ path\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_OS_method_move_to_trash>`
|
||
|
||
将给定 ``path`` 处的文件或目录移动到系统的回收站。另见 :ref:`DirAccess.remove()<class_DirAccess_method_remove>`\ 。
|
||
|
||
该方法仅支持全局路径,所以可能需要使用 :ref:`ProjectSettings.globalize_path()<class_ProjectSettings_method_globalize_path>`\ 。请勿将其用于 ``res://`` 中的文件,因为它在导出后的项目中是无法正常工作的。
|
||
|
||
如果找不到文件或目录,或者系统不支持该方法,则返回 :ref:`@GlobalScope.FAILED<class_@GlobalScope_constant_FAILED>`\ 。
|
||
|
||
|
||
.. tabs::
|
||
|
||
.. code-tab:: gdscript
|
||
|
||
var file_to_remove = "user://slot1.save"
|
||
OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))
|
||
|
||
.. code-tab:: csharp
|
||
|
||
var fileToRemove = "user://slot1.save";
|
||
OS.MoveToTrash(ProjectSettings.GlobalizePath(fileToRemove));
|
||
|
||
|
||
|
||
\ **注意:**\ 该方法在 Android、Linux、macOS 和 Windows 上实现。
|
||
|
||
\ **注意:**\ 如果用户在其系统上禁用了回收站,则该文件将被永久删除。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_open_midi_inputs:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **open_midi_inputs**\ (\ ) :ref:`🔗<class_OS_method_open_midi_inputs>`
|
||
|
||
初始化系统 MIDI 驱动的单例,允许 Godot 接收 :ref:`InputEventMIDI<class_InputEventMIDI>`\ 。另见 :ref:`get_connected_midi_inputs()<class_OS_method_get_connected_midi_inputs>` 和 :ref:`close_midi_inputs()<class_OS_method_close_midi_inputs>`\ 。
|
||
|
||
\ **注意:**\ 该方法在 Linux、macOS、Windows、Web 上实现。
|
||
|
||
\ **注意:**\ 在 Web 平台上,浏览器需要支持 Web MIDI。\ `目前 <https://caniuse.com/midi>`__\ 主流浏览器中除了 Safari 都支持。
|
||
|
||
\ **注意:**\ 在 Web 平台上,需要在浏览器中授权才能使用 MIDI 输入。权限请求会在调用 :ref:`open_midi_inputs()<class_OS_method_open_midi_inputs>` 时进行。用户接受权限请求后浏览器才会处理 MIDI 输入。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_open_with_program:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Error<enum_@GlobalScope_Error>` **open_with_program**\ (\ program_path\: :ref:`String<class_String>`, paths\: :ref:`PackedStringArray<class_PackedStringArray>`\ ) :ref:`🔗<class_OS_method_open_with_program>`
|
||
|
||
使用指定的应用程序打开一个或多个文件/目录。\ ``program_path`` 指定的是用来打开文件的应用程序路径,\ ``paths`` 中包含的是要打开的文件/目录的数组。
|
||
|
||
\ **注意:**\ 大多数情况下只有 macOS 上使用 :ref:`create_process()<class_OS_method_create_process>` 可能失败才需要使用该函数。其他平台会使用 :ref:`create_process()<class_OS_method_create_process>` 作为回退实现。
|
||
|
||
\ **注意:**\ 在 macOS 上,理想情况下 ``program_path`` 应该是 ``.app`` 捆绑包的路径。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_read_buffer_from_stdin:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`PackedByteArray<class_PackedByteArray>` **read_buffer_from_stdin**\ (\ buffer_size\: :ref:`int<class_int>` = 1024\ ) :ref:`🔗<class_OS_method_read_buffer_from_stdin>`
|
||
|
||
从标准输入读取用户输入的原始数据字符串。这个操作是\ *阻塞的* ,如果在主线程上调用 :ref:`read_buffer_from_stdin()<class_OS_method_read_buffer_from_stdin>` 就会导致窗口冻结。
|
||
|
||
- 如果标准输入为控制台,则该方法会阻塞到程序在标准输入中接收到换行(通常是用户按下了 :kbd:`Enter`\ )。
|
||
|
||
- 如果标准输入为管道,则该方法会阻塞到读取指定数量的数据或管道关闭。
|
||
|
||
- 如果标准输入为文件,则该方法会读取指定数量的数据(到达文件末尾时则不足指定数量)并立即返回。
|
||
|
||
\ **注意:**\ 该方法在 Linux、macOS 和 Windows 上实现。
|
||
|
||
\ **注意:**\ 在导出的 Windows 版本中,运行控制台包装器可执行文件来访问终端。如果标准输入为控制台,那么不通过控制台包装器运行就会导致卡死。如果标准输入为管道或文件,那么就可以不借助控制台包装器直接使用。如果你需要具有控制台支持的单个可执行文件,请使用启用 ``windows_subsystem=console`` 标志编译的自定义构建。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_read_string_from_stdin:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`String<class_String>` **read_string_from_stdin**\ (\ buffer_size\: :ref:`int<class_int>` = 1024\ ) :ref:`🔗<class_OS_method_read_string_from_stdin>`
|
||
|
||
从标准输入读取用户输入。这个操作可能导致\ *阻塞* ,如果是在主线程上调用的 :ref:`read_string_from_stdin()<class_OS_method_read_string_from_stdin>`\ ,就会导致窗口冻结。
|
||
|
||
- 如果标准输入是控制台,则该方法会阻塞到程序在标准输入中接收到一个断行为止(通常由用户按下 :kbd:`Enter` 触发)。
|
||
|
||
- 如果标准输入是管道,则该方法会阻塞至读取指定量的数据或管道断开为止。
|
||
|
||
- 如果标准输入是文件,则该方法会读取指定量的数据(到达文件末尾时会则更少)并立即返回。
|
||
|
||
\ **注意:**\ 该方法会自动将 ``\r\n`` 换行替换为 ``\n`` 并移除字符串末尾的换行。读取未经处理的数据请使用 :ref:`read_buffer_from_stdin()<class_OS_method_read_buffer_from_stdin>`\ 。
|
||
|
||
\ **注意:**\ 该方法在 Linux、macOS 和 Windows 上实现。
|
||
|
||
\ **注意:**\ 使用导出的 Windows 版本时,如需访问终端,请运行控制台包装器可执行文件。如果标准输入为控制台,不使用控制台包装器运行时调用该方法会导致卡死。如果标准输入为管道或文件,则可以不使用控制台包装器。如果你需要具有控制台支持的单个可执行文件,请使用启用 ``windows_subsystem=console`` 标志编译的自定义构建。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_remove_logger:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **remove_logger**\ (\ logger\: :ref:`Logger<class_Logger>`\ ) :ref:`🔗<class_OS_method_remove_logger>`
|
||
|
||
移除由 :ref:`add_logger()<class_OS_method_add_logger>` 添加的自定义日志记录器。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_request_permission:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **request_permission**\ (\ name\: :ref:`String<class_String>`\ ) :ref:`🔗<class_OS_method_request_permission>`
|
||
|
||
向操作系统请求名为 ``name`` 的权限。如果已授权则返回 ``true``\ 。另见 :ref:`MainLoop.on_request_permissions_result<class_MainLoop_signal_on_request_permissions_result>`\ 。
|
||
|
||
\ ``name`` 必须是权限的全名。例如:
|
||
|
||
- ``OS.request_permission("android.permission.READ_EXTERNAL_STORAGE")``\
|
||
|
||
- ``OS.request_permission("android.permission.POST_NOTIFICATIONS")``\
|
||
|
||
- ``OS.request_permission("macos.permission.RECORD_SCREEN")``\
|
||
|
||
- ``OS.request_permission("appleembedded.permission.AUDIO_RECORD")``\
|
||
|
||
\ **注意:**\ 在 Android 上,导出时必须设置权限。
|
||
|
||
\ **注意:**\ 该方法在 Android、macOS、visionOS 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_request_permissions:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`bool<class_bool>` **request_permissions**\ (\ ) :ref:`🔗<class_OS_method_request_permissions>`
|
||
|
||
向操作系统请求\ *危险*\ 权限。如果已授权则返回 ``true``\ 。另见 :ref:`MainLoop.on_request_permissions_result<class_MainLoop_signal_on_request_permissions_result>`\ 。
|
||
|
||
\ **注意:**\ 导出时必须检查权限。
|
||
|
||
\ **注意:**\ 该方法仅在 Android 上实现。安装 Android 应用时会自动授予普通权限。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_revoke_granted_permissions:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **revoke_granted_permissions**\ (\ ) :ref:`🔗<class_OS_method_revoke_granted_permissions>`
|
||
|
||
在 macOS(仅限沙盒应用程序)上,该功能会清除应用程序可访问的用户选择的文件夹列表。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_set_environment:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **set_environment**\ (\ variable\: :ref:`String<class_String>`, value\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_OS_method_set_environment>`
|
||
|
||
将环境变量 ``variable`` 的值设置为 ``value``\ 。运行 :ref:`set_environment()<class_OS_method_set_environment>` 后,会为 Godot 进程和任何用 :ref:`execute()<class_OS_method_execute>` 执行的进程设置该环境变量。该环境变量\ *不会*\ 持续存在于 Godot 进程终止后运行的进程中。
|
||
|
||
\ **注意:**\ 环境变量的名称在除 Windows 外的所有平台上都是区分大小写的。名称 ``variable`` 不能为空,也不能包含 ``=`` 字符。在 Windows 上,在环境块中注册的 ``variable``\ 、\ ``value``\ 、\ ``=`` 以及 null 终止符的总长度有 32767 个字符的限制。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_set_restart_on_exit:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **set_restart_on_exit**\ (\ restart\: :ref:`bool<class_bool>`, arguments\: :ref:`PackedStringArray<class_PackedStringArray>` = PackedStringArray()\ ) :ref:`🔗<class_OS_method_set_restart_on_exit>`
|
||
|
||
如果 ``restart`` 为 ``true``\ ,则项目在使用 :ref:`SceneTree.quit()<class_SceneTree_method_quit>` 或 :ref:`Node.NOTIFICATION_WM_CLOSE_REQUEST<class_Node_constant_NOTIFICATION_WM_CLOSE_REQUEST>` 退出时,会自动重新启动。可以提供命令行 ``arguments``\ 。要使用最初用于运行项目的命令行参数重新启动项目,请将 :ref:`get_cmdline_args()<class_OS_method_get_cmdline_args>` 作为 ``arguments`` 的值传递。
|
||
|
||
该方法可用于应用需要重新启动的设置更改。另见 :ref:`is_restart_on_exit_set()<class_OS_method_is_restart_on_exit_set>` 和 :ref:`get_restart_on_exit_arguments()<class_OS_method_get_restart_on_exit_arguments>`\ 。
|
||
|
||
\ **注意:**\ 该方法只在桌面平台上有效,并且只在项目不是从编辑器启动时有效。不会影响移动和 Web 平台,或者当项目从编辑器启动时。
|
||
|
||
\ **注意:**\ 如果项目进程崩溃或被用户\ *杀死*\ (通过发送 ``SIGKILL`` 而不是通常的 ``SIGTERM``\ ),项目不会自动重新启动。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_set_thread_name:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Error<enum_@GlobalScope_Error>` **set_thread_name**\ (\ name\: :ref:`String<class_String>`\ ) :ref:`🔗<class_OS_method_set_thread_name>`
|
||
|
||
为当前线程分配指定的名称。如果在当前平台不可使用,则返回 :ref:`@GlobalScope.ERR_UNAVAILABLE<class_@GlobalScope_constant_ERR_UNAVAILABLE>`\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_set_use_file_access_save_and_swap:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **set_use_file_access_save_and_swap**\ (\ enabled\: :ref:`bool<class_bool>`\ ) :ref:`🔗<class_OS_method_set_use_file_access_save_and_swap>`
|
||
|
||
如果 ``enabled`` 为 ``true``\ ,那么在以写模式打开文件时,会使用在同一位置打开的临时文件。关闭时会自动将其应用至目标文件。
|
||
|
||
适用于文件可能被杀毒软件、文本编辑器、甚至 Godot 编辑器自己等其他程序打开的场景。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_shell_open:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Error<enum_@GlobalScope_Error>` **shell_open**\ (\ uri\: :ref:`String<class_String>`\ ) :ref:`🔗<class_OS_method_shell_open>`
|
||
|
||
请求操作系统使用最合适的程序打开由 ``uri`` 标识的资源。例如:
|
||
|
||
- ``OS.shell_open("C:\\Users\\name\\Downloads")`` 在 Windows 上会用资源管理器打开用户的 Downloads 文件夹。
|
||
|
||
- ``OS.shell_open("C:/Users/name/Downloads")`` 在 Windows 也会用资源管理器打开用户的 Downloads 文件夹。
|
||
|
||
- ``OS.shell_open("https://godotengine.org")`` 会使用默认网页浏览器打开 Godot 官方网站。
|
||
|
||
- ``OS.shell_open("mailto:example@example.com")`` 会打开默认电子邮件客户端并将“收件人”字段设置为 ``example@example.com``\ 。其他支持自定义的字段见 `RFC 2368 - [code]mailto[/code] URL 方案 <https://datatracker.ietf.org/doc/html/rfc2368>`__\ 。
|
||
|
||
可以使用 :ref:`ProjectSettings.globalize_path()<class_ProjectSettings_method_globalize_path>` 将 ``res://`` 和 ``user://`` 项目路径转换为系统路径,以便与该方法一起使用。
|
||
|
||
\ **注意:**\ 请使用 :ref:`String.uri_encode()<class_String_method_uri_encode>` 对 URL 中的字符进行编码,得到的 URL 才能安全使用、可移植。尤其是在包含换行的情况下。否则项目导出至 Web 平台后 :ref:`shell_open()<class_OS_method_shell_open>` 可能无法正常工作。
|
||
|
||
\ **注意:**\ 这个方法在 Android、iOS、Web、Linux、macOS 以及 Windows 上实现。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_shell_show_in_file_manager:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
:ref:`Error<enum_@GlobalScope_Error>` **shell_show_in_file_manager**\ (\ file_or_dir_path\: :ref:`String<class_String>`, open_folder\: :ref:`bool<class_bool>` = true\ ) :ref:`🔗<class_OS_method_shell_show_in_file_manager>`
|
||
|
||
请求操作系统打开文件管理器,导航至给定的文件或目录路径 ``file_or_dir_path`` 并选中目标文件或文件夹。
|
||
|
||
如果 ``open_folder`` 为 ``true`` 并且 ``file_or_dir_path`` 是有效的目录路径,则操作系统将打开文件管理器并导航到目标文件夹,而不选择任何内容。
|
||
|
||
请使用 :ref:`ProjectSettings.globalize_path()<class_ProjectSettings_method_globalize_path>` 将 ``res://`` 和 ``user://`` 项目路径转换为系统路径以与该方法一起使用。
|
||
|
||
\ **注意:**\ 目前该方法仅在 Windows 和 macOS 上实现。在其他平台上,它会回退至使用前缀为 ``file://`` 的 ``file_or_dir_path`` 目录路径调用 :ref:`shell_open()<class_OS_method_shell_open>`\ 。
|
||
|
||
.. rst-class:: classref-item-separator
|
||
|
||
----
|
||
|
||
.. _class_OS_method_unset_environment:
|
||
|
||
.. rst-class:: classref-method
|
||
|
||
|void| **unset_environment**\ (\ variable\: :ref:`String<class_String>`\ ) |const| :ref:`🔗<class_OS_method_unset_environment>`
|
||
|
||
如果给定的环境变量存在,则从当前环境中移除。\ ``variable`` 名称不能为空或包含 ``=`` 字符。在运行 :ref:`unset_environment()<class_OS_method_unset_environment>` 后,将为 Godot 进程和使用 :ref:`execute()<class_OS_method_execute>` 执行的任何进程移除环境变量。环境变量的移除并\ *不会*\ 持续到 Godot 进程终止后运行的进程。
|
||
|
||
\ **注意:**\ 环境变量名称在除 Windows 以外的所有平台上都区分大小写。
|
||
|
||
.. |virtual| replace:: :abbr:`virtual (本方法通常需要用户覆盖才能生效。)`
|
||
.. |required| replace:: :abbr:`required (This method is required to be overridden when extending its base class.)`
|
||
.. |const| replace:: :abbr:`const (本方法无副作用,不会修改该实例的任何成员变量。)`
|
||
.. |vararg| replace:: :abbr:`vararg (本方法除了能接受在此处描述的参数外,还能够继续接受任意数量的参数。)`
|
||
.. |constructor| replace:: :abbr:`constructor (本方法用于构造某个类型。)`
|
||
.. |static| replace:: :abbr:`static (调用本方法无需实例,可直接使用类名进行调用。)`
|
||
.. |operator| replace:: :abbr:`operator (本方法描述的是使用本类型作为左操作数的有效运算符。)`
|
||
.. |bitfield| replace:: :abbr:`BitField (这个值是由下列位标志构成位掩码的整数。)`
|
||
.. |void| replace:: :abbr:`void (无返回值。)`
|