is valid라는 옵션은 당연하게도 직역해서 이게 "유효"한 지 판단하는 노드이다.
대표적으로 복사와 참조 개념에서 사실상 주소가 없는 상태로 변수가 연결되었을 때
유효하지 않다고 볼 수 있다.
1. nullptr인 포인터
- 가장 기본적인 형태.
- 예: AActor* MyActor = nullptr;
- 포인터 자체가 어떤 객체도 가리키지 않으므로 IsValid(MyActor)는 false.
2. PendingKill 상태의 UObject
- UE의 GC(Garbage Collector)가 해당 객체를 삭제 예약한 상태.
- 이 시점에서는 실제 메모리 상에 객체가 남아있더라도 이미 “죽은 객체”로 취급됨.
- 예:→ IsValid(MyActor)는 false를 반환함.
-
if (MyActor->IsPendingKill()) { // 이미 제거 예정 }
3. Destroyed된 Actor (월드에서 제거된 경우)
- Destroy() 호출 후 아직 완전히 GC 되지 않았지만, 더 이상 게임 세계에 존재하지 않음.
- 대표적인 예:그 후에도 MyActor 변수는 여전히 주소를 들고 있을 수 있지만,
IsValid(MyActor)는 false를 반환함. -
MyActor->Destroy();
4. Level Unload / World 전환 시 사라진 객체
- 월드가 언로드되면 해당 월드에 속했던 모든 Actor와 Component는 더 이상 유효하지 않음.
- 예: Seamless Travel, Level Streaming, PIE 종료 등.
5. Weak Pointer가 끊어진 경우 (TWeakObjectPtr)
- Weak Pointer는 GC에 의해 객체가 삭제되면 자동으로 무효화됨.
- 예:
-
TWeakObjectPtr<AActor> WeakActor = SomeActor; ... if (!WeakActor.IsValid()) { // 이미 삭제된 객체 }
6. Soft Reference 로드 실패 (TSoftObjectPtr, TSoftClassPtr)
- Asset Reference가 유효하지 않은 경로나 삭제된 리소스를 가리키는 경우.
- 로드되지 않았거나, 경로가 변경되어 실제 존재하지 않는 경우 IsValid()는 false.
7. Component Detach 후 Owner 파괴된 경우
- 어떤 Component가 World에 붙어있지 않거나 Owner Actor가 파괴되면, 그 Component도 사실상 무효한 상태.
추가적인 경우로 이런것들도 있는데, 하나로 통일해서 말하자면 객체가 연결 불가능하거나
연결 불가능 할 예정인 경우에 속한다.

BluePrint에서 검색으로 간단히 찾을 수 있으며 bool 값을 반환하는 노드와
branch가 혼합되어 true/false로 exec이 나눠지는 노드도 있다. 알아서 판단해서 쓰면 된다.
이상으로 도움이 되었길 바라며,
끝.
'게임 개발 > Unreal Engine 5' 카테고리의 다른 글
| Unreal Engine C++] 생성자와 소멸자 (0) | 2025.11.05 |
|---|---|
| Unreal Engine 5] BluePrint에서의 상속 (0) | 2025.10.24 |
| Unreal Engine 5) Blueprint 실행 경로 추적하기, CallStack (0) | 2025.07.29 |
| Unreal Engine 5, Blueprint) Gate, MultiGate, Do Once, Do N (6) | 2025.06.09 |
| Unreal Engine 5, Blue Print) Flip Flop - 번갈아 실행하기 (0) | 2025.06.08 |
댓글