OS
Наследует: Object
Предоставляет доступ к общим функциям операционной системы.
Описание
Класс OS охватывает наиболее распространенные функции для взаимодействия с операционной системой хоста, такие как видеодрайвер, задержки, переменные среды, выполнение двоичных файлов, командная строка и т. д.
Примечание: В Godot 4 функции OS, связанные с управлением окнами, буфером обмена и TTS, были перемещены в синглтон DisplayServer (и класс Window). Функции, связанные со временем, были удалены и доступны только в классе Time.
Обучающие материалы
Свойства
|
||
|
||
|
Методы
Перечисления
enum RenderingDriver: 🔗
RenderingDriver RENDERING_DRIVER_VULKAN = 0
Драйвер рендеринга Vulkan. Он требует поддержки Vulkan 1.0 и автоматически использует функции из Vulkan 1.1 и 1.2, если они доступны.
RenderingDriver RENDERING_DRIVER_OPENGL3 = 1
Драйвер рендеринга OpenGL 3. Он использует OpenGL 3.3 Core Profile на настольных платформах, OpenGL ES 3.0 на мобильных устройствах и WebGL 2.0 на веб-устройствах.
RenderingDriver RENDERING_DRIVER_D3D12 = 2
Драйвер рендеринга Direct3D 12.
RenderingDriver RENDERING_DRIVER_METAL = 3
Драйвер рендеринга Metal.
enum SystemDir: 🔗
SystemDir SYSTEM_DIR_DESKTOP = 0
Относится к пути к каталогу рабочего стола.
SystemDir SYSTEM_DIR_DCIM = 1
Относится к пути к каталогу DCIM (изображения с цифровой камеры).
SystemDir SYSTEM_DIR_DOCUMENTS = 2
Относится к пути к каталогу документов.
SystemDir SYSTEM_DIR_DOWNLOADS = 3
Относится к пути к каталогу загрузок.
SystemDir SYSTEM_DIR_MOVIES = 4
Относится к пути к каталогу фильмов (или видео).
SystemDir SYSTEM_DIR_MUSIC = 5
Относится к пути к каталогу «Музыка».
SystemDir SYSTEM_DIR_PICTURES = 6
Относится к пути к каталогу изображений.
SystemDir SYSTEM_DIR_RINGTONES = 7
Относится к пути к каталогу рингтонов.
enum StdHandleType: 🔗
StdHandleType STD_HANDLE_INVALID = 0
Стандартное устройство ввода-вывода (I/O) недействительно. Невозможно получить или отправить данные с этих стандартных устройств ввода-вывода.
StdHandleType STD_HANDLE_CONSOLE = 1
Стандартное устройство ввода-вывода — это консоль. Обычно это происходит, когда Godot запускается из терминала без перенаправления. Это также используется для всех стандартных устройств ввода-вывода при запуске Godot из редактора, по крайней мере на настольных платформах.
StdHandleType STD_HANDLE_FILE = 2
Стандартное устройство ввода-вывода — это обычный файл. Обычно это происходит при перенаправлении с терминала, например, godot > stdout.txt, godot < stdin.txt или godot > stdout_stderr.txt 2>&1.
StdHandleType STD_HANDLE_PIPE = 3
Стандартное устройство ввода-вывода — FIFO/pipe. Обычно это происходит при использовании pipe с терминала, например echo "Hello" | godot.
StdHandleType STD_HANDLE_UNKNOWN = 4
Тип стандартного устройства ввода-вывода неизвестен.
Описания свойств
Если true, движок фильтрует временную дельту, измеренную между каждым кадром, и пытается компенсировать случайные отклонения. Это работает только в системах, где активна V-Sync.
Примечание: При запуске это то же самое, что и ProjectSettings.application/run/delta_smoothing.
bool low_processor_usage_mode = false 🔗
Если true, движок оптимизируется для низкого использования процессора, обновляя экран только при необходимости. Может улучшить расход батареи на мобильных устройствах.
Примечание: При запуске это то же самое, что и ProjectSettings.application/run/low_processor_mode.
int low_processor_usage_mode_sleep_usec = 6900 🔗
void set_low_processor_usage_mode_sleep_usec(value: int)
int get_low_processor_usage_mode_sleep_usec()
Количество сна между кадрами при включенном режиме низкой загрузки процессора в микросекундах. Более высокие значения приведут к снижению загрузки ЦП. См. также low_processor_usage_mode.
Примечание: При запуске это то же самое, что и ProjectSettings.application/run/low_processor_mode_sleep_usec.
Описания метода
void add_logger(logger: Logger) 🔗
Добавьте пользовательский регистратор для перехвата внутреннего потока сообщений.
void alert(text: String, title: String = "Alert!") 🔗
Отображает модальное диалоговое окно, используя реализацию хост-платформы. Выполнение движка блокируется до тех пор, пока диалог не будет закрыт.
void close_midi_inputs() 🔗
Отключает системный драйвер MIDI. Godot больше не будет получать InputEventMIDI. См. также open_midi_inputs() и get_connected_midi_inputs().
Примечание: Этот метод реализован в Linux, macOS, Windows и Web.
Вызывает сбой движка (или редактора, если он вызван в скрипте @tool. См. также kill().
Примечание: Этот метод следует использовать только для тестирования обработчика сбоев системы, а не для каких-либо других целей. Для общего сообщения об ошибках используйте (в порядке предпочтения) @GDScript.assert(), @GlobalScope.push_error() или alert().
int create_instance(arguments: PackedStringArray) 🔗
Создает новый экземпляр Godot, который запускается независимо. arguments используются в указанном порядке и разделяются пробелом.
Если процесс успешно создан, этот метод возвращает идентификатор нового процесса, который можно использовать для мониторинга процесса (и потенциального завершения его с помощью kill()). Если процесс не может быть создан, этот метод возвращает -1.
См. create_process(), если вы хотите запустить другой процесс.
Примечание: Этот метод реализован в Android, Linux, macOS и Windows.
int create_process(path: String, arguments: PackedStringArray, open_console: bool = false) 🔗
Создает новый процесс, который выполняется независимо от Godot. Он не будет завершен при завершении Godot. Путь, указанный в path, должен существовать и быть исполняемым файлом или пакетом macOS .app. Путь определяется на основе текущей платформы. arguments используются в указанном порядке и разделяются пробелом.
В Windows, если open_console равен true и процесс является консольным приложением, будет открыто новое окно терминала.
Если процесс успешно создан, этот метод возвращает его идентификатор процесса, который можно использовать для мониторинга процесса (и потенциально завершить его с помощью kill()). В противном случае этот метод возвращает -1.
Пример: Запуск другого экземпляра проекта:
var pid = OS.create_process(OS.get_executable_path(), [])
var pid = OS.CreateProcess(OS.GetExecutablePath(), []);
См. execute(), если вы хотите запустить внешнюю команду и получить результаты.
Примечание: Этот метод реализован в Android, Linux, macOS и Windows.
Примечание: В macOS изолированные приложения ограничены запуском только встроенных вспомогательных исполняемых файлов, указанных во время экспорта или системного пакета .app, системные пакеты .app будут игнорировать аргументы.
void delay_msec(msec: int) const 🔗
Задерживает выполнение текущего потока на msec миллисекунд. msec должен быть больше или равен 0. В противном случае delay_msec() ничего не делает и выводит сообщение об ошибке.
Примечание: delay_msec() — это блокирующий способ задержки выполнения кода. Чтобы задержать выполнение кода неблокирующим способом, можно использовать SceneTree.create_timer(). Ожидание с SceneTreeTimer задерживает выполнение кода, размещенного под await, не влияя на остальную часть проекта (или редактора для EditorPlugin и EditorScript).
Примечание: Когда delay_msec() вызывается в основном потоке, он замораживает проект и не позволяет ему перерисовывать и регистрировать ввод, пока не пройдет задержка. При использовании delay_msec() как части EditorPlugin или EditorScript редактор будет заморожен, но проект не будет заморожен, если он в данный момент запущен (поскольку проект является независимым дочерним процессом).
void delay_usec(usec: int) const 🔗
Задерживает выполнение текущего потока на usec микросекунд. usec должен быть больше или равен 0. В противном случае delay_usec() ничего не делает и выводит сообщение об ошибке.
Примечание: delay_usec() — это блокирующий способ задержки выполнения кода. Чтобы задержать выполнение кода неблокирующим способом, можно использовать SceneTree.create_timer(). Ожидание с SceneTreeTimer задерживает выполнение кода, размещенного под await, не влияя на остальную часть проекта (или редактора для EditorPlugin и EditorScript).
Примечание: Когда delay_usec() вызывается в основном потоке, он замораживает проект и не позволяет ему перерисовывать и регистрировать ввод, пока не пройдет задержка. При использовании delay_usec() как части EditorPlugin или EditorScript редактор будет заморожен, но проект не будет заморожен, если он в данный момент запущен (поскольку проект является независимым дочерним процессом).
int execute(path: String, arguments: PackedStringArray, output: Array = [], read_stderr: bool = false, open_console: bool = false) 🔗
Выполняет заданный процесс блокирующим способом. Файл, указанный в path, должен существовать и быть исполняемым. Будет использоваться системное разрешение пути. arguments используются в заданном порядке, разделяются пробелами и заключаются в кавычки.
Если указан массив output, полный вывод оболочки процесса добавляется к output как один элемент String. Если read_stderr равен true, вывод в стандартный поток ошибок также добавляется к массиву.
В Windows, если open_console равен true и процесс является консольным приложением, открывается новое окно терминала.
Этот метод возвращает код завершения команды или -1, если процесс не выполняется.
Примечание: Основной поток будет заблокирован до тех пор, пока не завершится выполненная команда. Используйте Thread, чтобы создать отдельный поток, который не будет блокировать основной поток, или используйте create_process(), чтобы создать полностью независимый процесс.
Например, чтобы получить список содержимого рабочего каталога:
var output = []
var exit_code = OS.execute("ls", ["-l", "/tmp"], output)
Godot.Collections.Array output = [];
int exitCode = OS.Execute("ls", ["-l", "/tmp"], output);
Если вы хотите получить доступ к встроенной оболочке или выполнить составную команду, можно вызвать платформенно-зависимую оболочку. Например:
var output = []
OS.execute("CMD.exe", ["/C", "cd %TEMP% && dir"], output)
Godot.Collections.Array output = [];
OS.Execute("CMD.exe", ["/C", "cd %TEMP% && dir"], output);
Примечание: Этот метод реализован в Android, Linux, macOS и Windows.
Примечание: Чтобы выполнить встроенную команду интерпретатора команд Windows, укажите cmd.exe в path, /c в качестве первого аргумента и нужную команду в качестве второго аргумента.
Примечание: Чтобы выполнить встроенную команду PowerShell, укажите powershell.exe в path, -Command в качестве первого аргумента и нужную команду в качестве второго аргумента.
Примечание: Чтобы выполнить встроенную команду оболочки Unix, укажите имя исполняемого файла оболочки в path, -c в качестве первого аргумента и нужную команду в качестве второго аргумента.
Примечание: В macOS изолированные приложения ограничены запуском только встроенных вспомогательных исполняемых файлов, указанных во время экспорта.
Примечание: В Android системные команды, такие как dumpsys, могут быть запущены только на устройстве с правами root.
Dictionary execute_with_pipe(path: String, arguments: PackedStringArray, blocking: bool = true) 🔗
Создает новый процесс, который выполняется независимо от Godot с перенаправленным вводом-выводом. Он не будет завершен при завершении Godot. Путь, указанный в path, должен существовать и быть исполняемым файлом или пакетом macOS .app. Путь определяется на основе текущей платформы. arguments используются в указанном порядке и разделяются пробелом.
Если blocking равно false, созданные каналы работают в неблокируемом режиме, т. е. операции чтения и записи будут возвращаться немедленно. Используйте FileAccess.get_error(), чтобы проверить, была ли последняя операция чтения/записи успешной.
Если процесс не может быть создан, этот метод возвращает пустой Dictionary. В противном случае этот метод возвращает Dictionary со следующими ключами:
"stdio"- FileAccess для доступа к каналам stdin и stdout процесса (чтение/запись)."stderr"- FileAccess для доступа к каналу stderr процесса (только для чтения)."pid"- идентификатор процесса как int, который можно использовать для мониторинга процесса (и потенциального его завершения с помощью kill()).
Примечание: Этот метод реализован в Android, Linux, macOS и Windows.
Примечание: Чтобы выполнить встроенную команду интерпретатора команд Windows, укажите cmd.exe в path, /c в качестве первого аргумента и нужную команду в качестве второго аргумента.
Примечание: Чтобы выполнить встроенную команду PowerShell, укажите powershell.exe в path, -Command в качестве первого аргумента и нужную команду в качестве второго аргумента.
Примечание: Чтобы выполнить встроенную команду оболочки Unix, укажите имя исполняемого файла оболочки в path, -c в качестве первого аргумента и нужную команду в качестве второго аргумента.
Примечание: В macOS изолированные приложения ограничены запуском только встроенных вспомогательных исполняемых файлов, указанных во время экспорта или системного пакета .app, системные пакеты .app будут игнорировать аргументы.
Key find_keycode_from_string(string: String) const 🔗
Находит код клавиши для заданной строки. Возвращаемые значения эквивалентны константам Key.
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)
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)
См. также get_keycode_string().
String get_cache_dir() const 🔗
Возвращает глобальный каталог данных кэша в соответствии со стандартами операционной системы.
На платформе Linux/BSD этот путь можно переопределить, установив переменную среды XDG_CACHE_HOME перед запуском проекта. Для получения дополнительной информации см. Пути к файлам в проектах Godot в документации. См. также get_config_dir() и get_data_dir().
Не путать с get_user_data_dir(), который возвращает специфичный для проекта путь к данным пользователя.
PackedStringArray get_cmdline_args() 🔗
Возвращает аргументы командной строки, переданные движку, за исключением аргументов, обрабатываемых движком, таких как --headless и --fullscreen.
# Godot был запущен с помощью следующей команды:
# godot --headless --verbose --scene my_scene.tscn --custom
OS.get_cmdline_args() # Returns ["--scene", "my_scene.tscn", "--custom"]
Аргументы командной строки могут быть записаны в любой форме, включая как --key value, так и --key=value, чтобы их можно было корректно обработать, при условии, что пользовательские аргументы командной строки не конфликтуют с аргументами движка.
Вы также можете использовать переменные окружения с помощью метода get_environment().
Вы можете установить ProjectSettings.editor/run/main_run_args, чтобы определить аргументы командной строки, передаваемые редактором при запуске проекта.
Пример: Преобразование аргументов командной строки в Dictionary с использованием формы --key=value для аргументов:
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:
# Параметры без аргументов будут присутствовать в словаре,
# со значением, установленным в пустую строку.
arguments[argument.trim_prefix("--")] = ""
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
{
// Параметры без аргументов будут присутствовать в словаре,
// со значением, установленным в пустую строку.
arguments[argument.TrimPrefix("--")] = "";
}
}
Примечание: Не рекомендуется передавать пользовательские аргументы напрямую, так как движок может их проигнорировать или изменить. Вместо этого передавайте стандартный двойной дефис UNIX (--), а затем пользовательские аргументы, которые движок по умолчанию игнорирует. Их можно прочитать с помощью get_cmdline_user_args().
PackedStringArray get_cmdline_user_args() 🔗
Возвращает аргументы командной строки, переданные движку. Аргументы пользователя игнорируются движком и резервируются для пользователя. Они передаются после аргумента с двойным дефисом --. ++ может использоваться, когда -- перехватывается другой программой (например, startx).
# Godot был запущен с помощью следующей команды:
# godot --fullscreen --custom -- --level=2 --hardcore
OS.get_cmdline_args() # Возвращает ["--custom"]
OS.get_cmdline_user_args() # Возвращает ["--level=2", "--hardcore"]
Чтобы получить аргументы, переданные перед -- или ++, используйте get_cmdline_args().
String get_config_dir() const 🔗
Возвращает глобальный каталог конфигурации пользователя в соответствии со стандартами операционной системы.
На платформе Linux/BSD этот путь можно переопределить, установив переменную среды XDG_CONFIG_HOME перед запуском проекта. Для получения дополнительной информации см. Пути к файлам в проектах Godot в документации. См. также get_cache_dir() и get_data_dir().
Не путать с get_user_data_dir(), который возвращает специфичный для проекта путь к данным пользователя.
PackedStringArray get_connected_midi_inputs() 🔗
Возвращает массив имен подключенных устройств MIDI, если они существуют. Возвращает пустой массив, если системный драйвер MIDI ранее не был инициализирован с помощью open_midi_inputs(). См. также close_midi_inputs().
Примечание: Этот метод реализован в Linux, macOS, Windows и Web.
Примечание: На веб-платформе веб-MIDI должен поддерживаться браузером. На данный момент он поддерживается всеми основными браузерами, кроме Safari.
Примечание: На веб-платформе использование ввода MIDI требует предварительного предоставления разрешения браузеру. Этот запрос разрешения выполняется при вызове open_midi_inputs(). Браузер воздержится от обработки ввода MIDI, пока пользователь не примет запрос разрешения.
Возвращает глобальный каталог пользовательских данных в соответствии со стандартами операционной системы.
На платформе Linux/BSD этот путь можно переопределить, установив переменную среды XDG_DATA_HOME перед запуском проекта. Для получения дополнительной информации см. Пути к файлам в проектах Godot в документации. См. также get_cache_dir() и get_config_dir().
Не путать с get_user_data_dir(), который возвращает специфичный для проекта путь к пользовательским данным.
String get_distribution_name() const 🔗
Возвращает имя дистрибутива для платформ Linux и BSD (например, "Ubuntu", "Manjaro", "OpenBSD" и т. д.).
Возвращает то же значение, что и get_name() для стандартных Android ROM, но пытается вернуть пользовательское имя ROM для популярных производных Android, таких как "LineageOS".
Возвращает то же значение, что и get_name() для других платформ.
Примечание: Этот метод не поддерживается на веб-платформе. Он возвращает пустую строку.
PackedByteArray get_entropy(size: int) 🔗
Генерирует PackedByteArray криптографически безопасных случайных байтов с заданным size.
Примечание: Генерация больших объемов байтов с использованием этого метода может привести к блокировке и энтропии более низкого качества на большинстве платформ. Использование Crypto.generate_random_bytes() является предпочтительным в большинстве случаев.
String get_environment(variable: String) const 🔗
Возвращает значение заданной переменной среды или пустую строку, если variable не существует.
Примечание: Дважды проверьте регистр variable. Имена переменных среды чувствительны к регистру на всех платформах, кроме Windows.
Примечание: В macOS приложения не имеют доступа к переменным среды оболочки.
String get_executable_path() const 🔗
Возвращает путь к текущему исполняемому файлу движка.
Примечание: В macOS, если вы хотите запустить другой экземпляр Godot, всегда используйте create_instance() вместо того, чтобы полагаться на путь к исполняемому файлу.
PackedStringArray get_granted_permissions() const 🔗
На устройствах Android: возвращает список предоставленных опасных разрешений.
На macOS: возвращает список предоставленных разрешений и выбранных пользователем папок, доступных приложению (только для изолированных приложений). Используйте встроенный диалог файлов для запроса разрешения на доступ к папке.
На iOS, visionOS: возвращает список предоставленных разрешений.
String get_keycode_string(code: Key) const 🔗
Возвращает заданный код клавиши как String.
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"
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"
См. также find_keycode_from_string(), InputEventKey.keycode и InputEventKey.get_keycode_with_modifiers().
Возвращает локаль ОС хоста как String в форме language_Script_COUNTRY_VARIANT@extra. Каждая подстрока после language является необязательной и может отсутствовать.
language- 2-х или 3-х буквенный код языка в нижнем регистре.Script- 4-х буквенный код скрипта в верхнем регистре.COUNTRY- 2-х или 3-х буквенный код страны в верхнем регистре.VARIANT- языковой вариант, регион и порядок сортировки. Вариант может иметь любое количество подчеркнутых ключевых слов.extra- список дополнительных ключевых слов, разделенных точкой с запятой. Это может включать информацию о валюте, календаре, порядке сортировки и системе нумерации.
Если вам нужен только код языка, а не полностью указанная локаль из ОС, вы можете использовать get_locale_language().
String get_locale_language() const 🔗
Возвращает 2-х или 3-буквенный код языка операционной системы хоста в виде строки, которая должна быть единообразной на всех платформах. Это эквивалентно извлечению части language строки get_locale().
Это можно использовать для сужения полностью указанных строк локали только до «общего» кода языка, когда вам не нужна дополнительная информация о коде страны или вариантах. Например, для франкоканадского пользователя с локалью fr_CA это вернет fr.
int get_main_thread_id() const 🔗
Возвращает идентификатор основного потока. См. get_thread_caller_id().
Примечание: Идентификаторы потоков не являются детерминированными и могут повторно использоваться при перезапусках приложения.
Dictionary get_memory_info() const 🔗
Возвращает Dictionary, содержащий информацию о текущей памяти со следующими записями:
"physical"- общий объем используемой физической памяти в байтах. Это значение может быть немного меньше фактического объема физической памяти, поскольку оно не включает память, зарезервированную ядром и устройствами."free"- объем физической памяти, который может быть немедленно выделен без доступа к диску или других затратных операций, в байтах. Процесс может выделить больше физической памяти, но это действие потребует перемещения неактивных страниц на диск, что может быть затратно."available"- объем памяти, который может быть выделен без расширения файла(ов) подкачки, в байтах. Это значение включает как физическую память, так и подкачку."stack"- размер стека текущего потока в байтах.
Примечание: Значение каждой записи может быть -1, если оно неизвестно.
String get_model_name() const 🔗
Возвращает название модели текущего устройства.
Примечание: Этот метод реализован на Android, iOS, macOS и Windows. Возвращает "GenericDevice" на неподдерживаемых платформах.
Возвращает имя хост-платформы.
В Windows это
"Windows".В macOS это
"macOS".В операционных системах на базе Linux это
"Linux".В операционных системах на базе BSD это
"FreeBSD","NetBSD","OpenBSD"или"BSD"в качестве резерва.В Android это
"Android".В iOS это
"iOS".В Web это
"Web".
Примечание: Пользовательские сборки движка могут поддерживать дополнительные платформы, такие как консоли, возможно, возвращая другие имена.
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!")
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;
}
Примечание: На веб-платформах по-прежнему возможно определить ОС хост-платформы с помощью тегов функций. См. has_feature().
int get_process_exit_code(pid: int) const 🔗
Возвращает код выхода порожденного процесса после завершения его выполнения (см. is_process_running()).
Возвращает -1, если pid не является PID порожденного дочернего процесса, процесс все еще выполняется или метод не реализован для текущей платформы.
Примечание: Возвращает -1, если pid является процессом приложения, связанным с macOS.
Примечание: Этот метод реализован в Android, Linux, macOS и Windows.
Возвращает номер, используемый хост-машиной для уникальной идентификации этого приложения.
Примечание: В Интернете этот метод всегда возвращает 0.
int get_processor_count() const 🔗
Возвращает количество логических ядер ЦП, доступных на хост-машине. На ЦП с включенной функцией HyperThreading это число будет больше количества физических ядер ЦП.
String get_processor_name() const 🔗
Возвращает полное имя модели ЦП на хост-компьютере (например, "Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz").
Примечание: Этот метод реализован только в Windows, macOS, Linux и iOS. На Android и в Интернете get_processor_name() возвращает пустую строку.
PackedStringArray get_restart_on_exit_arguments() const 🔗
Возвращает список аргументов командной строки, которые будут использоваться при автоматическом перезапуске проекта с использованием set_restart_on_exit(). См. также is_restart_on_exit_set().
int get_static_memory_peak_usage() const 🔗
Возвращает максимальный объем используемой статической памяти. Работает только в отладочных сборках.
int get_static_memory_usage() const 🔗
Возвращает объем статической памяти, используемой программой в байтах. Работает только в отладочных сборках.
StdHandleType get_stderr_type() const 🔗
Возвращает тип стандартного устройства ошибок.
Примечание: Этот метод реализован в Linux, macOS и Windows.
StdHandleType get_stdin_type() const 🔗
Возвращает тип стандартного устройства ввода.
Примечание: Этот метод реализован в Linux, macOS и Windows.
Примечание: В экспортированных сборках Windows запустите исполняемый файл оболочки консоли для доступа к стандартному вводу. Если вам нужен один исполняемый файл с полной поддержкой консоли, используйте пользовательскую сборку, скомпилированную с флагом windows_subsystem=console.
StdHandleType get_stdout_type() const 🔗
Возвращает тип стандартного устройства вывода.
Примечание: Этот метод реализован в Linux, macOS и Windows.
String get_system_ca_certificates() 🔗
Возвращает список центров сертификации, которым доверяет операционная система, в виде строки объединенных сертификатов в формате PEM.
String get_system_dir(dir: SystemDir, shared_storage: bool = true) const 🔗
Возвращает путь к часто используемым папкам на разных платформах, как определено dir. См. константы SystemDir для доступных расположений.
Примечание: Этот метод реализован в Android, Linux, macOS и Windows.
Примечание: Общее хранилище реализовано в Android и позволяет различать каталоги, специфичные для приложения, и общие каталоги, если shared_storage имеет значение true. Общие каталоги имеют дополнительные ограничения в Android.
String get_system_font_path(font_name: String, weight: int = 400, stretch: int = 100, italic: bool = false) const 🔗
Возвращает путь к системному файлу шрифта с font_name и стилем. Возвращает пустую строку, если соответствующие шрифты не найдены.
Для запроса шрифтов по умолчанию можно использовать следующие псевдонимы: "sans-serif", "serif", "monospace", "cursive" и "fantasy".
Примечание: Возвращаемый шрифт может иметь другой стиль, если запрошенный стиль недоступен.
Примечание: Этот метод реализован на Android, iOS, Linux, macOS и Windows.
PackedStringArray get_system_font_path_for_text(font_name: String, text: String, locale: String = "", script: String = "", weight: int = 400, stretch: int = 100, italic: bool = false) const 🔗
Возвращает массив путей к файлам системных подстановочных шрифтов, которые похожи на шрифт с font_name и стилем для указанного текста, локали и скрипта. Возвращает пустой массив, если соответствующие шрифты не найдены.
Следующие псевдонимы можно использовать для запроса шрифтов по умолчанию: "sans-serif", "serif", "monospace", "cursive" и "fantasy".
Примечание: В зависимости от ОС не гарантируется, что какой-либо из возвращенных шрифтов подойдет для рендеринга указанного текста. Шрифты следует загружать и проверять в том порядке, в котором они возвращаются, и использовать первый подходящий.
Примечание: Возвращенные шрифты могут иметь другой стиль, если запрошенный стиль недоступен или принадлежит к другому семейству шрифтов.
Примечание: Этот метод реализован на Android, iOS, Linux, macOS и Windows.
PackedStringArray get_system_fonts() const 🔗
Возвращает список доступных имен семейств шрифтов.
Примечание: Этот метод реализован на Android, iOS, Linux, macOS и Windows.
Возвращает глобальный временный каталог данных в соответствии со стандартами операционной системы.
int get_thread_caller_id() const 🔗
Возвращает идентификатор текущего потока. Его можно использовать в журналах для упрощения отладки многопоточных приложений.
Примечание: Идентификаторы потоков не являются детерминированными и могут повторно использоваться при перезапусках приложения.
String get_unique_id() const 🔗
Возвращает строку, которая уникальна для устройства.
Примечание: Эта строка может измениться без уведомления, если пользователь переустановит свою операционную систему, обновит ее или изменит свое оборудование. Это означает, что ее, как правило, не следует использовать для шифрования постоянных данных, поскольку данные, сохраненные до неожиданного изменения идентификатора, станут недоступными. Возвращаемая строка также может быть подделана с помощью внешних программ, поэтому не полагайтесь на строку, возвращаемую этим методом, в целях безопасности.
Примечание: В Интернете возвращает пустую строку и генерирует ошибку, поскольку этот метод не может быть реализован по соображениям безопасности.
String get_user_data_dir() const 🔗
Возвращает абсолютный путь к каталогу, в который записываются пользовательские данные (каталог user:// в Godot). Путь зависит от имени проекта и ProjectSettings.application/config/use_custom_user_dir.
В Windows это
%AppData%\Godot\app_userdata\[project_name]или%AppData%\[custom_name], если заданоuse_custom_user_dir.%AppData%расширяется до%UserProfile%\AppData\Roaming.В macOS это
~/Library/Application Support/Godot/app_userdata/[project_name]или~/Library/Application Support/[custom_name], если заданоuse_custom_user_dir.В Linux и BSD это
~/.local/share/godot/app_userdata/[project_name]или~/.local/share/[custom_name], если заданоuse_custom_user_dir.В Android и iOS это изолированный каталог во внутреннем или внешнем хранилище в зависимости от конфигурации пользователя.
В Web это виртуальный каталог, управляемый браузером.
Если имя проекта пустое, [project_name] возвращается к [unnamed project].
Не путать с get_data_dir(), который возвращает глобальный (не относящийся к проекту) домашний каталог пользователя.
Возвращает точную производственную и сборочную версию операционной системы. Она отличается от фирменной версии, используемой в маркетинге. Это помогает различать разные выпуски операционных систем, включая второстепенные версии, а также внутренние и пользовательские сборки.
Для Windows возвращаются основная и второстепенная версии, а также номер сборки. Например, возвращаемая строка может выглядеть как
10.0.9926для сборки Windows 10.Для скользящих дистрибутивов, таких как Arch Linux, возвращается пустая строка.
Для macOS и iOS возвращаются основная и второстепенная версии, а также номер патча.
Для Android возвращаются версия SDK и инкрементный номер сборки. Если это пользовательская прошивка, она пытается вернуть свою версию.
Примечание: Этот метод не поддерживается на веб-платформе. Он возвращает пустую строку.
String get_version_alias() const 🔗
Возвращает фирменную версию, используемую в маркетинге, за которой следует номер сборки (в Windows), номер версии (в macOS) или версия SDK и инкрементный номер сборки (в Android). Примеры включают 11 (build 22000), Sequoia (15.0.0) и 15 (SDK 35 build abc528-11988f).
Затем это значение можно добавить к get_name(), чтобы получить полное, понятное человеку имя операционной системы и комбинацию версии для операционной системы. Обновления функций Windows, такие как 24H2, не содержатся в результирующей строке, но Windows Server распознается как таковой (например, 2025 (build 26100) для Windows Server 2025).
Примечание: Этот метод поддерживается только в Windows, macOS и Android. В других операционных системах он возвращает то же значение, что и get_version().
PackedStringArray get_video_adapter_driver_info() const 🔗
Возвращает имя и версию драйвера видеоадаптера для текущей активной видеокарты пользователя в виде PackedStringArray. См. также RenderingServer.get_video_adapter_api_version().
Первый элемент содержит имя драйвера, например, nvidia, amdgpu и т. д.
Второй элемент содержит версию драйвера. Например, для драйвера nvidia на платформе Linux/BSD версия имеет формат 510.85.02. Для Windows формат драйвера — 31.0.15.1659.
Примечание: Этот метод поддерживается только в Linux/BSD и Windows, если он не запущен в режиме headless. На других платформах он возвращает пустой массив.
Примечание: Этот метод будет выполняться медленно при первом вызове в сеансе; его выполнение может занять несколько секунд в зависимости от операционной системы и оборудования. Он блокируется при вызове в основном потоке, поэтому рекомендуется вызывать его в отдельном потоке с помощью Thread. Это позволяет движку продолжать работу во время получения информации. Однако get_video_adapter_driver_info() не потокобезопасен, поэтому его не следует вызывать из нескольких потоков одновременно.
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()
bool has_environment(variable: String) const 🔗
Возвращает true, если переменная среды с именем variable существует.
Примечание: Дважды проверьте регистр variable. Имена переменных среды чувствительны к регистру на всех платформах, кроме Windows.
bool has_feature(tag_name: String) const 🔗
Возвращает true, если функция для данного тега функции поддерживается в текущем запущенном экземпляре, в зависимости от платформы, сборки и т. д. Может использоваться для проверки того, запущена ли в данный момент отладочная сборка на определенной платформе или архитектуре и т. д. Более подробную информацию см. в документации Теги функций.
Примечание: Имена тегов чувствительны к регистру.
Примечание: На веб-платформе для указания платформы хоста определен один из следующих дополнительных тегов: web_android, web_ios, web_linuxbsd, web_macos или web_windows.
Возвращает true, если двоичный файл Godot, используемый для запуска проекта, является шаблоном экспорта debug, или при запуске в редакторе.
Возвращает false, если двоичный файл Godot, используемый для запуска проекта, является шаблоном экспорта release.
Примечание: Чтобы проверить, является ли двоичный файл Godot, используемый для запуска проекта, шаблоном экспорта (отладки или выпуска), используйте вместо этого OS.has_feature("template").
bool is_keycode_unicode(code: int) const 🔗
Возвращает true, если входной keycode соответствует символу Unicode. Список кодов см. в константах Key.
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
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
bool is_process_running(pid: int) const 🔗
Возвращает true, если идентификатор дочернего процесса (pid) все еще выполняется, или false, если он был завершен. pid должен быть допустимым идентификатором, сгенерированным из create_process().
Примечание: Этот метод реализован в Android, iOS, Linux, macOS и Windows.
bool is_restart_on_exit_set() const 🔗
Возвращает true, если проект автоматически перезапустится при выходе из него по любой причине, false в противном случае. См. также set_restart_on_exit() и get_restart_on_exit_arguments().
Возвращает true, если приложение запущено в песочнице.
Примечание: Этот метод реализован только в macOS и Linux.
bool is_stdout_verbose() const 🔗
Возвращает true, если движок был запущен с аргументом командной строки --verbose или -v, или если ProjectSettings.debug/settings/stdout/verbose_stdout равен true. См. также @GlobalScope.print_verbose().
bool is_userfs_persistent() const 🔗
Возвращает true, если файловая система user:// является постоянной, то есть ее состояние остается прежним после того, как игрок выходит из игры и снова ее запускает. Относится к веб-платформе, где эта постоянная возможность может быть недоступна.
Убить (завершить) процесс, идентифицированный заданным идентификатором процесса (pid), например, идентификатором, возвращаемым execute() в неблокируемом режиме. См. также crash().
Примечание: Этот метод также можно использовать для уничтожения процессов, которые не были порождены движком.
Примечание: Этот метод реализован в Android, iOS, Linux, macOS и Windows.
Error move_to_trash(path: String) const 🔗
Перемещает файл или каталог по указанному path в системную корзину. См. также DirAccess.remove().
Метод принимает только глобальные пути, поэтому вам может потребоваться использовать ProjectSettings.globalize_path(). Не используйте его для файлов в res://, так как он не будет работать в экспортированных проектах.
Возвращает @GlobalScope.FAILED, если файл или каталог не могут быть найдены или система не поддерживает этот метод.
var file_to_remove = "user://slot1.save"
OS.move_to_trash(ProjectSettings.globalize_path(file_to_remove))
var fileToRemove = "user://slot1.save";
OS.MoveToTrash(ProjectSettings.GlobalizePath(fileToRemove));
Примечание: Этот метод реализован на Android, Linux, macOS и Windows.
Примечание: Если пользователь отключил корзину в своей системе, файл будет удален навсегда.
void open_midi_inputs() 🔗
Инициализирует синглтон для системного драйвера MIDI, позволяя Godot получать InputEventMIDI. См. также get_connected_midi_inputs() и close_midi_inputs().
Примечание: Этот метод реализован в Linux, macOS, Windows и Web.
Примечание: На веб-платформе веб-MIDI должен поддерживаться браузером. На данный момент он поддерживается всеми основными браузерами, кроме Safari.
Примечание: На веб-платформе использование ввода MIDI требует предварительного предоставления разрешения браузеру. Этот запрос разрешения выполняется при вызове open_midi_inputs(). Браузер воздержится от обработки ввода MIDI, пока пользователь не примет запрос разрешения.
Error open_with_program(program_path: String, paths: PackedStringArray) 🔗
Открывает один или несколько файлов/каталогов с помощью указанного приложения. Параметр program_path задаёт путь к приложению, используемому для открытия файлов, а paths содержит массив путей к файлам/каталогам, которые нужно открыть.
Примечание: Этот метод в основном актуален только для macOS, где открытие файлов с помощью create_process() может завершиться ошибкой. На других платформах используется create_process().
Примечание: В macOS параметр program_path в идеале должен быть путём к пакету .app.
PackedByteArray read_buffer_from_stdin(buffer_size: int = 1024) 🔗
Считывает пользовательский ввод как необработанные данные из стандартного ввода. Эта операция может быть блокирующей, что приводит к замораживанию окна, если read_buffer_from_stdin() вызывается в основном потоке.
Если стандартный ввод — консоль, этот метод будет блокироваться до тех пор, пока программа не получит разрыв строки в стандартном вводе (обычно нажатием пользователем Enter).
Если стандартный ввод — канал, этот метод будет блокироваться до тех пор, пока не будет прочитано определенное количество данных или канал не будет закрыт.
Если стандартный ввод — файл, этот метод прочитает определенное количество данных (или меньше, если достигнут конец файла) и немедленно вернется.
Примечание: Этот метод реализован в Linux, macOS и Windows.
Примечание: В экспортированных сборках Windows запустите исполняемый файл оболочки консоли для доступа к терминалу. Если стандартный ввод — консоль, вызов этого метода без оболочки консоли приведет к постоянной заморозке. Если стандартный ввод — это канал или файл, его можно использовать без оболочки консоли. Если вам нужен один исполняемый файл с полной поддержкой консоли, используйте пользовательскую сборку, скомпилированную с флагом windows_subsystem=console.
String read_string_from_stdin(buffer_size: int = 1024) 🔗
Считывает пользовательский ввод как строку в кодировке UTF-8 из стандартного ввода. Эта операция может быть блокирующей, что приводит к замораживанию окна, если read_string_from_stdin() вызывается в основном потоке.
Если стандартный ввод — консоль, этот метод будет блокироваться до тех пор, пока программа не получит разрыв строки в стандартном вводе (обычно нажатием пользователем Enter).
Если стандартный ввод — канал, этот метод будет блокироваться до тех пор, пока не будет прочитано определенное количество данных или канал не будет закрыт.
Если стандартный ввод — файл, этот метод прочитает определенное количество данных (или меньше, если достигнут конец файла) и немедленно вернет управление.
Примечание: Этот метод автоматически заменяет разрывы строк \r\n на \n и удаляет их из конца строки. Используйте read_buffer_from_stdin() для чтения необработанных данных.
Примечание: Этот метод реализован в Linux, macOS и Windows.
Примечание: В экспортированных сборках Windows запустите исполняемый файл оболочки консоли, чтобы получить доступ к терминалу. Если стандартный ввод — консоль, вызов этого метода без оболочки консоли зависнет навсегда. Если стандартный ввод — канал или файл, его можно использовать без оболочки консоли. Если вам нужен один исполняемый файл с полной поддержкой консоли, используйте пользовательскую сборку, скомпилированную с флагом windows_subsystem=console.
void remove_logger(logger: Logger) 🔗
Удалить пользовательский логер, добавленный add_logger().
bool request_permission(name: String) 🔗
Запрашивает разрешение у ОС для указанного name. Возвращает true, если разрешение уже предоставлено. См. также MainLoop.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.
Запрашивает опасные разрешения от ОС. Возвращает true, если разрешения уже предоставлены. См. также MainLoop.on_request_permissions_result.
Примечание: Разрешения должны быть проверены во время экспорта.
Примечание: Этот метод реализован только на Android. Обычные разрешения автоматически предоставляются во время установки в приложениях Android.
void revoke_granted_permissions() 🔗
В macOS (только для изолированных приложений) эта функция очищает список выбранных пользователем папок, доступных приложению.
void set_environment(variable: String, value: String) const 🔗
Устанавливает значение переменной среды variable на value. Переменная среды будет установлена для процесса Godot и любого процесса, выполняемого с помощью execute() после запуска set_environment(). Переменная среды не сохранится в процессах, запущенных после завершения процесса Godot.
Примечание: Имена переменных среды чувствительны к регистру на всех платформах, кроме Windows. Имя variable не может быть пустым или включать символ =. В Windows существует ограничение в 32767 символов для общей длины variable, value, а также = и нулевого терминатора, которые будут зарегистрированы в блоке среды.
void set_restart_on_exit(restart: bool, arguments: PackedStringArray = PackedStringArray()) 🔗
Если restart равен true, автоматически перезапускает проект при выходе из него с помощью SceneTree.quit() или Node.NOTIFICATION_WM_CLOSE_REQUEST. Можно указать arguments командной строки. Чтобы перезапустить проект с теми же аргументами командной строки, которые изначально использовались для запуска проекта, передайте get_cmdline_args() в качестве значения для arguments.
Этот метод можно использовать для применения изменений настроек, требующих перезапуска. См. также is_restart_on_exit_set() и get_restart_on_exit_arguments().
Примечание: Этот метод эффективен только на настольных платформах и только когда проект не запущен из редактора. Он не будет иметь никакого эффекта на мобильных и веб-платформах или когда проект запущен из редактора.
Примечание: Если процесс проекта аварийно завершается или завершен пользователем (путем отправки SIGKILL вместо обычного SIGTERM), проект не будет перезапущен автоматически.
Error set_thread_name(name: String) 🔗
Назначает заданное имя текущему потоку. Возвращает @GlobalScope.ERR_UNAVAILABLE, если недоступно на текущей платформе.
void set_use_file_access_save_and_swap(enabled: bool) 🔗
Если enabled имеет значение true, при открытии файла для записи вместо него используется временный файл. При закрытии он автоматически применяется к целевому файлу.
Это может быть полезно, когда файлы могут быть открыты другими приложениями, такими как антивирусы, текстовые редакторы или даже сам редактор Godot.
Error shell_open(uri: String) 🔗
Запрашивает у ОС открытие ресурса, указанного uri, с помощью наиболее подходящей программы. Например:
OS.shell_open("C:\\Users\\name\\Downloads")в Windows открывает файловый менеджер в папке "Загрузки" пользователя.OS.shell_open("C:/Users/name/Downloads")также работает в Windows и открывает файловый менеджер в папке "Загрузки" пользователя.OS.shell_open("https://godotengine.org")открывает веб-браузер по умолчанию на официальном сайте Godot.OS.shell_open("mailto:example@example.com")открывает почтовый клиент по умолчанию с полем "Кому" в значенииexample@example.com. См. RFC 2368 — Схема URL [code]mailto[/code] для списка полей, которые можно добавить.
Используйте ProjectSettings.globalize_path() для преобразования пути проекта res:// или user:// в системный путь для использования с этим методом.
Примечание: Используйте String.uri_encode() для кодирования символов в URL-адресах безопасным для URL-адресов, переносимым способом. Это особенно необходимо для переносов строк. В противном случае shell_open() может работать некорректно в проекте, экспортированном на веб-платформу.
Примечание: Этот метод реализован на Android, iOS, Web, Linux, macOS и Windows.
Error shell_show_in_file_manager(file_or_dir_path: String, open_folder: bool = true) 🔗
Запрашивает у ОС открытие файлового менеджера, переход к указанному file_or_dir_path и выбор целевого файла или папки.
Если open_folder равно true и file_or_dir_path является допустимым путем к каталогу, ОС откроет файловый менеджер и перейдет к целевой папке, ничего не выбирая.
Используйте ProjectSettings.globalize_path() для преобразования пути проекта res:// или user:// в системный путь для использования с этим методом.
Примечание: Этот метод в настоящее время реализован только в Windows и macOS. На других платформах он будет возвращаться к shell_open() с путем к каталогу file_or_dir_path с префиксом file://.
void unset_environment(variable: String) const 🔗
Удаляет указанную переменную среды из текущей среды, если она существует. Имя variable не может быть пустым или включать символ =. Переменная среды будет удалена для процесса Godot и любого процесса, выполняемого с execute() после запуска unset_environment(). Удаление переменной среды не сохранится для процессов, запущенных после завершения процесса Godot.
Примечание: Имена переменных среды чувствительны к регистру на всех платформах, кроме Windows.