Обробка запитів на вихід

Вихід

Більшість платформ мають можливість подати запит на закриття програми. На робочих столах це зазвичай робиться за допомогою значка "x" в заголовку вікна. На Android кнопка назад використовується для виходу з програми на головний екран (або повернутися назад).

Обробка сповіщення

На настільних платформах головний цикл MainLoop <class_MainLoop>`має спеціальне сповіщення ``MainLoop.NOTIFICATION_WM_QUIT_REQUEST`, яке надсилається на всі вузли при запиті на вихід з програми.

На Android надсилається MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST. Натискання кнопки Назад призведе до виходу з програми, якщо в налаштуваннях проекту відмічений пункт Application > Config > Quit On Go Back (що, за замовчуванням, так).

Примітка

MainLoop.NOTIFICATION_WM_GO_BACK_REQUEST не підтримується на iOS, оскільки пристрої iOS не мають фізичної кнопки Назад.

Обробка сповіщення здійснюється наступним чином (на будь-якому вузлі):

func _notification(what):
    if what == MainLoop.NOTIFICATION_WM_QUIT_REQUEST:
        get_tree().quit() # default behavior

При розробці мобільних додатків вихід зразу на головний екран не бажаний, тому поведінку можна змінити.

Важливо зазначити, що за замовчуванням програми Godot мають вбудовану поведінку, для виходу, при запиті на вихід, її можна змінити:

get_tree().set_auto_accept_quit(false)

Надсилання власного сповіщення про вихід

Хоча змусити програму закритися можна зробити, викликавши , це не надішле сповіщення про вихід. Це означає, що функція, описана вище, не буде викликана. Вихід за викликом SceneTree.quit не дозволить виконувати спеціальні дії (наприклад, збереження, підтвердження виходу, або налагодження), навіть якщо ви намагаєтеся затримати рядок, який змушує вийти.

Замість цього ви повинні надіслати запит на вихід:

get_tree().notification(MainLoop.NOTIFICATION_WM_QUIT_REQUEST)