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. 해결 방법 [미해결]
- 이번 문제는 아직 해결하지 못했다... 조금 더 알아봐야 될거 같다.
- 일단 원인은 알았으니 코드 관리에 좀 더 신경써 봐야겠다.
'Unity > 트러블 슈팅' 카테고리의 다른 글
| [Unity] UI가 작동하지 않는 이유 (0) | 2025.06.27 |
|---|---|
| [Unity] Enum을 추상화 했을때 발생한 트러블 슈팅 (0) | 2025.06.24 |
| [Unity] 생성자가 오브젝트 파괴후에도 참조되는 현상 (0) | 2025.06.19 |
| [Unity] Fade가 끊기는 문제 해결 (0) | 2025.06.18 |
| [Unity] Time.unscaledDeltaTime이 첫 프레임에 튀는 현상 (0) | 2025.06.17 |