Unity에서는 게임 오브젝트가 파괴되기 전에 작업을 수행할 수 있는 여러 이벤트 함수를 제공합니다. 이번 글에서는 그 중 onApplicationQuit, OnDisable, OnDestroy 이벤트 함수에 대해 자세히 살펴보겠습니다.
onApplicationQuit
onApplicationQuit 함수는 게임이 종료될 때 호출되는 함수입니다. 이 함수는 게임 오브젝트에 속하지 않은 전역 함수이므로, 모든 스크립트에서 사용할 수 있습니다. onApplicationQuit 함수는 다음과 같이 정의할 수 있습니다.
void onApplicationQuit()
{
// 게임이 종료될 때 수행할 작업
}
onApplicationQuit 함수는 게임이 종료될 때 한 번만 호출되며, 호출 이후에는 어떠한 코드도 실행되지 않습니다. 따라서 이 함수에서는 게임 종료 전에 반드시 수행해야 할 작업들을 처리해야 합니다. 이 함수는 게임이 종료되기 전에 필요한 데이터를 저장하는 작업 등을 처리하는 데 사용됩니다.
OnDisable
OnDisable 함수는 게임 오브젝트가 비활성화될 때 호출되는 함수입니다. 이 함수는 다음과 같이 정의할 수 있습니다.
void OnDisable()
{
// 게임 오브젝트가 비활성화될 때 수행할 작업
}
OnDisable 함수는 게임 오브젝트가 활성화되었다가 다시 비활성화되는 경우에도 호출됩니다. 이 함수에서는 게임 오브젝트가 활성화될 때 수행된 작업을 되돌리는 등의 작업을 수행할 수 있습니다. 예를 들어, 게임 오브젝트가 비활성화될 때, 해당 오브젝트에서 실행되고 있는 타이머나 애니메이션을 중지할 수 있습니다.
Note: 이 메서드에서는 코루틴을 실행할 수 없습니다.
OnDestroy
OnDestroy 함수는 게임 오브젝트가 파괴될 때 호출되는 함수입니다. 이 함수는 다음과 같이 정의할 수 있습니다.
void OnDestroy()
{
// 게임 오브젝트가 파괴될 때 수행할 작업
}
OnDestroy 함수는 게임 오브젝트가 파괴되기 전에 호출됩니다. 이 함수에서는 게임 오브젝트가 파괴되기 전에 수행해야 할 작업을 처리할 수 있습니다. 예를 들어, 게임 오브젝트가 파괴될 때, 해당 오브젝트가 사용하고 있는 리소스나 메모리를 해제할 수 있습니다.
이 함수는 해당 게임 오브젝트가 활성화 된 상태에서만 호출됩니다. 따라서, 게임 오브젝트가 비활성화 된 상태에서 OnDestroy 함수를 호출하려면, 해당 게임 오브젝트의 activeInHierarchy 속성을 true로 설정해야 합니다.
어느 함수를 사용해야 할까요?
Unity에서는 게임 오브젝트의 생명 주기에 따라 다양한 이벤트 함수를 제공합니다. 각 함수는 게임의 다른 시점에서 호출되며, 각각의 함수에서는 다른 작업을 처리할 수 있습니다. 적절한 이벤트 함수를 선택하여 게임 오브젝트의 생명 주기를 관리하는 것이 중요합니다.
만약 게임 오브젝트에서 실행 중인 타이머나 애니메이션 등을 멈추고 싶다면 OnDisable 함수를 사용하세요. 게임 종료 전에 필요한 데이터를 저장하고 싶다면 onApplicationQuit 함수를 사용하세요. 게임 오브젝트가 파괴될 때, 해당 오브젝트가 사용하고 있는 리소스나 메모리를 해제하고 싶다면 OnDestroy 함수를 사용하세요.
결론
Unity에서는 게임 오브젝트의 생명 주기에 따라 다양한 이벤트 함수를 제공합니다. 이번 글에서는 onApplicationQuit, OnDisable, OnDestroy 이벤트 함수에 대해 살펴보았습니다. 각 함수는 게임의 다른 시점에서 호출되며, 각각의 함수에서는 다른 작업을 처리할 수 있습니다. 적절한 이벤트 함수를 선택하여 게임 오브젝트의 생명 주기를 관리하는 것이 중요합니다.
'Unity' 카테고리의 다른 글
Unity : Ray, Raycast 및 RaycastHit (0) | 2023.06.22 |
---|---|
Unity의 IL2CPP란? (0) | 2023.06.21 |
C# Action과 UnityEvent의 차이점 (2) | 2023.05.11 |
Unity : 사운드 재생 (0) | 2023.04.25 |
Unity에서 Transform 컴포넌트와 RectTransform 컴포넌트의 차이점 (0) | 2023.04.24 |