Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Призупинення ігор і режим процесу
Вступ
У більшості ігор бажано в якийсь момент перервати гру, щоб зробити щось інше, наприклад зробити перерву або змінити параметри. Реалізація детального контролю того, що можна призупинити (а що ні), вимагає великої праці, тому в Godot є проста структура для призупинення.
Як працює пауза
Щоб призупинити гру, необхідно встановити стан паузи. Це робиться шляхом призначення true властивості SceneTree.paused:
get_tree().paused = true
GetTree().Paused = true;
Це призведе до двох речей. По-перше, 2D і 3D фізика буде зупинена для всіх вузлів. По-друге, поведінка певних вузлів зупиниться або почнеться залежно від режиму їх процесу.
Примітка
Фізичні сервери можна зробити активними, поки гру призупинено, використовуючи їхні методи set_active.
Режими процесу
Кожен вузол у Godot має «Режим процесу», який визначає, коли він обробляється. Його можна знайти та змінити у властивостях вузла Node в інспекторі.
Ви також можете змінити властивість за допомогою коду:
func _ready():
process_mode = Node.PROCESS_MODE_PAUSABLE
public override void _Ready()
{
ProcessMode = Node.ProcessModeEnum.Pausable;
}
Ось що кожен режим повідомляє вузлу робити:
Успадкувати: процес залежить від стану батьківського елемента, бабусі та дідуся тощо. Перший батьківський елемент, який має стан не успадковувати.
Пауза: обробляйте вузол (і його дочірні елементи в режимі успадкування), лише коли гру не призупинено.
WhenPaused: обробляти вузол (та його дочірні елементи в режимі успадкування) лише, коли гру призупинено.
Завжди: обробляти вузол (і його дочірні елементи в режимі успадкування) незважаючи ні на що. Призупинено чи ні, цей вузол оброблятиме.
Вимкнено: вузол (та його дочірні елементи в режимі успадкування) не оброблятимуться взагалі.
За замовчуванням усі вузли мають цю властивість у стані «Наслідувати». Якщо для батьківського елемента встановлено значення «Успадкувати», то перевірятимуться бабусі та дідусі тощо. Якщо стан не можна знайти в жодному з бабусь і дідусів, використовується стан паузи в SceneTree. Це означає, що за умовчанням, коли гру призупинено, кожен вузол буде призупинено. Коли вузол припиняє обробку, трапляється кілька речей.
Функції _process, _physics_process, _input і _input_event не викликатимуться. Однак сигнали все ще працюють і викликають виконання підключеної функції, навіть якщо скрипт цієї функції приєднано до вузла, який зараз не обробляється.
Вузли анімації призупинять свою поточну анімацію, аудіовузли призупинять поточний аудіопотік, а частинки призупинять. Вони відновлюються автоматично, коли гру більше не призупинено.
Важливо зазначити, що навіть якщо вузол обробляється, поки гру призупинено, фізика НЕ працюватиме для нього за замовчуванням. Як було зазначено раніше, це тому, що сервери фізики вимкнено. Фізичні сервери можна зробити активними, поки гру призупинено, використовуючи їхні методи set_active.