보통 유니티에서 오브젝트를 제거할때 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 에러가 발생하게 된다
반응형
'가이드 > Unity, C#' 카테고리의 다른 글
[Unity/C#] Private 변수 에디터에서 보이게 하는 법 - SerializeField (0) | 2023.02.27 |
---|---|
[Unity/C#] summary(///) 주석 사용법 (0) | 2023.02.26 |
유니티 Text, Image Hexadecimal 색상으로 변경하기 (0) | 2023.02.04 |
유니티 IDE(비쥬얼 스튜디오, Rider) 설정하는 방법 (0) | 2023.02.04 |
Firebase Unity SDK 이전 버전 다운 받는 법 (0) | 2023.01.27 |
댓글