본문 바로가기
가이드/Unity, C#

[Unity/C#] Destroy와 DestroyImmediate의 차이점

by 루엔_vivid 2023. 2. 19.

보통 유니티에서 오브젝트를 제거할때 Destroy 함수를 사용하게 된다.

그런데 예제나 문서들을 보다보면 DestroyImmediate를 사용하는 경우도 있는데 과연 둘의 차이는 무엇이 있을까?

 

단어에서도 나오듯이 DestroyImmediate는 즉시 제거가 되고 Destroy는 프레임 끝에서 제거가 된다.

예를 들어 아래와 같이 코드를 작성하였을때

Gameobject object;

void DestroyObject()
{
    Destroy(object);
    Debug.Log(object.name());
}

void DestroyImmediateObject()
{
    DestroyImmediate(object);
    Debug.Log(object.name());
}

Destroy를 사용한 함수는 해당 프레임 끝이 오브젝트가 제거되게 되어

문제 없어 오브젝트의 이름을 출력할 수 있게 되지만

 

DestroyImmediate를 사용한 함수는 즉시 제거가 되어 null이 되므로

다음 줄에서 null exception 에러가 발생하게 된다

반응형

댓글