cast와 castcheck 차이🎯 game engine/◽ 언리얼(unreal)2025. 9. 14. 19:53
Table of Contents
728x90
반응형
🔹 1. Cast<T>(Obj)
- 안전 캐스팅 (safe cast)
- Obj가 T 타입으로 변환 가능하면 → 해당 포인터 반환
- 불가능하면 → nullptr 반환
- 그래서 반드시 if (Result) 같은 null 체크 필요
UGameInstance* GI = Cast<UGameInstance>(Outer); if (GI) { // 성공했을 때만 실행 }
🔹 2. CastChecked<T>(Obj)
- “무조건 이 타입일 거다” 라고 가정할 때 쓰는 캐스팅
- Obj가 T로 변환 불가능하면
→ 에디터에서는 check( ) 매크로 터짐 (Assert) → 크래시 발생 - 즉, 런타임에서 안전망 대신 강제 보장(assert) 을 사용
UGameInstance* GI = CastChecked<UGameInstance>(Outer); // 여기서 실패하면 에디터에서 바로 크래시!
🔹 When ?
- Cast<>()
→ 타입이 확실하지 않을 때, 런타임에서 유연하게 처리하고 싶을 때 (if로 분기 처리 가능) - CastChecked<>()
→ 타입이 무조건 맞아야 한다고 보장되는 상황일 때 (개발자 가정 검증 용도)
→ 틀리면 바로 크래시 → 버그 빨리 찾을 수 있음
🔹 예시
// 안전 캐스트 if (auto* GI = Cast<UGameInstance>(Outer)) { UE_LOG(LogTemp, Log, TEXT("GameInstance 찾음")); } // 강제 캐스트 (무조건 GameInstance여야 함) auto* GI = CastChecked<UGameInstance>(Outer); // Outer가 GameInstance 아니면 바로 에디터 크래시
✅ 정리:
- Cast<T> → 실패 시 nullptr 반환 → 런타임에서 안전
- CastChecked<T> → 실패 시 Assert 크래시 → 디버깅/개발 단계에서 유용
출처: chatGPT
728x90
반응형
'🎯 game engine > ◽ 언리얼(unreal)' 카테고리의 다른 글
| [Unreal] UI 세팅/구조 분석 (Set Up Common UI) (7) | 2025.09.16 |
|---|---|
| [Unreal] Frontend UI Subsystem (2) | 2025.09.14 |
| [unreal] AI 시스템 구조 및 Perception (6) | 2025.07.04 |
| [unreal] 애니메이션 리타게팅 (8) | 2025.07.04 |
| [unreal] Gamemode, UE_LOG (0) | 2025.03.08 |
@핑크코냥 :: 핑크코냥
존잘 프로그래머가 되고싶어