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...
종료 요청 처리
그만두다
대부분의 플랫폼에는 애플리케이션 종료를 요청할 수 있는 옵션이 있습니다. 데스크톱에서는 일반적으로 창 제목 표시줄에 있는 "x" 아이콘을 사용하여 이 작업을 수행합니다. 모바일 장치에서는 앱이 백그라운드에서 일시 중지된 동안 언제든지 종료될 수 있습니다.
알림 처리
데스크톱 및 웹 플랫폼에서 노드 <class_Node>`는 창 관리자에서 종료를 요청하면 특별한 ``NOTIFICATION_WM_CLOSE_REQUEST` 알림을 받습니다.
알림 처리는 다음과 같이 수행됩니다(모든 노드에서).
func _notification(what):
if what == NOTIFICATION_WM_CLOSE_REQUEST:
get_tree().quit() # default behavior
public override void _Notification(int what)
{
if (what == NotificationWMCloseRequest)
{
GetTree().Quit(); // default behavior
}
}
기본적으로 Godot 앱에는 창 관리자에서 종료를 요청할 때 종료되는 동작이 내장되어 있다는 점을 기억하는 것이 중요합니다. 사용자가 전체 종료 절차를 처리할 수 있도록 이를 변경할 수 있습니다.
get_tree().set_auto_accept_quit(false)
GetTree().AutoAcceptQuit = false;
모바일에서
모바일 플랫폼에는 ``NOTIFICATION_WM_CLOSE_REQUEST``와 직접적으로 동등한 것이 없습니다. 모바일 운영 체제의 특성으로 인해 종료하기 전에 코드를 실행할 수 있는 유일한 장소는 앱이 백그라운드에서 일시 중지될 때입니다. Android와 iOS 모두에서 앱은 사용자나 OS에 의해 언제든지 일시 중단된 상태에서 종료될 수 있습니다. 이러한 가능성에 대해 미리 계획하는 방법은 앱이 일시 중지될 때 필요한 작업을 수행하기 위해 ``NOTIFICATION_APPLICATION_PAUSED``를 활용하는 것입니다.
참고
iOS에서는 이 시그널로 시작된 작업을 완료하는 데 약 5초밖에 걸리지 않습니다. 이 할당량을 초과하면 iOS는 앱을 일시 중지하는 대신 앱을 종료합니다.
Android에서는 프로젝트 설정(기본값)에서 **Application > Config > Quit On Go Back**이 선택된 경우 뒤로 버튼을 누르면 애플리케이션이 종료됩니다. 그러면 ``NOTIFICATION_WM_GO_BACK_REQUEST``가 실행됩니다.
알림(Notifications)
:ref:`SceneTree.quit <class_SceneTree_method_quit>`을 호출하여 응용 프로그램을 강제로 닫을 수 있지만 그렇게 하면 ``NOTIFICATION_WM_CLOSE_REQUEST``가 씬 트리의 노드로 전송되지 않습니다. :ref:`SceneTree.quit <class_SceneTree_method_quit>`을 호출하여 종료하면 종료를 강제하는 줄을 지연시키려고 해도 사용자 지정 작업(예: 저장, 종료 확인, 디버깅)이 완료되지 않습니다.
대신, 씬 트리의 노드에게 예정된 프로그램 종료에 대해 알리려면 직접 알림을 보내야 합니다.
get_tree().root.propagate_notification(NOTIFICATION_WM_CLOSE_REQUEST)
GetTree().Root.PropagateNotification((int)NotificationWMCloseRequest);
이 알림을 보내면 모든 노드에게 프로그램 종료에 대해 알리지만 *3.X*와 달리 프로그램 자체는 종료되지 않습니다. 이전 동작을 달성하려면 알림 후에 :ref:`SceneTree.quit <class_SceneTree_method_quit>`을 호출해야 합니다.