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에서 제공됩니다.
일시중지 작동 방식
게임을 일시 중지하려면 일시 중지 상태를 설정해야 합니다. 이는 SceneTree.paused 속성에 ``true``를 할당하여 수행됩니다.
get_tree().paused = true
GetTree().Paused = true;
이렇게 하면 두 가지 문제가 발생합니다. 먼저 모든 노드에 대해 2D 및 3D 물리가 중지됩니다. 둘째, 특정 노드의 동작은 프로세스 모드에 따라 중지되거나 시작됩니다.
참고
set_active 메서드를 사용하면 게임이 일시 중지된 동안 물리 서버를 활성화할 수 있습니다.
처리 순서
Godot의 각 노드에는 처리 시기를 정의하는 "프로세스 모드"가 있습니다. 검사기의 노드의 노드 속성에서 찾아서 변경할 수 있습니다.
코드를 사용하여 속성을 변경할 수도 있습니다.
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 메서드를 사용하면 게임이 일시 중지된 동안 물리 서버를 활성화할 수 있습니다.