Unity/트러블 슈팅

[Unity] null처리가 되었는데 Debug.Log에 출력 되는 현상

turbulence93 2025. 6. 20. 20:30

1. 문제 상황

어떤 오브젝트가 null인지 확인했을 때 분명히 조건문에서는 true로 감지되어 "null입니다"라는 로그가 찍힌다.
그런데 그 null 객체를 Debug.Log(대상)으로 출력하면 오브젝트 이름이나 타입이 출력된다.

if (target == null)
{
    Debug.Log("타겟이 null입니다.");   // 출력됨
    Debug.Log(target);                 // [오브젝트 이름] 출력됨 → ????
}

2. 원인 분석

  • Unity에서는 해당 오브젝트가 C# 객체로는 살아있지만, 엔진 내부에서 파괴되었을 경우 null로 간주한다.
  • 하지만 Debug.Log()는 C# 객체 자체를 대상으로 하기 때문에 여전히 그 객체의 정보를 출력할 수 있다.
  • target == null → Unity 엔진 기준에서 파괴되었는가?
  • Debug.Log(target) → C# 객체 자체는 아직 살아 있으므로 출력 가능

3. 해결 방법 [미해결]

  • 이번 문제는 아직 해결하지 못했다... 조금 더 알아봐야 될거 같다.
  • 일단 원인은 알았으니 코드 관리에 좀 더 신경써 봐야겠다.