인프런 커뮤니티 질문&답변

Windfall님의 프로필 이미지
Windfall

작성한 질문수

언리얼 엔진4 입문 (C++ 기반)

스테이트 머신

pawn, character 질문입니다.

작성

·

193

0

1. Pawn을 검사할때 IsValid로 하는 이유가 따로 있나요?

TryGetPawnOwner리턴타입을 보니 APawn* ? 같던데

그냥 if(Pawn)하면 안되나요?

 

2. 그리고 왜 Pawn을 ACharacter타입으로 변환하는지 궁금합니다

GetMovementComponent()가 ACharacter타입만 쓸 수 있어서 그런가요?

 

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

1. 조금 다릅니다.
객체가 진짜 메모리에서 사라지면 nullptr이겠지만
UE에서는 메모리를 알아서 관리해주기 때문에
당장 삭제를 요청해도 지연되어 삭제될 수 있습니다.
이런 경우라면 객체는 메모리가 살아있지만 유효하지 않기 때문에
미묘한 상황까지 체크하려면 IsValid로 체크해줘야 합니다.

2.
너무 소소한 부분은 알아서 고치셔도 됩니다.
기본적으로 Cast는 dynamic_cast의 역할을 해서,
1) Character일 때만 실행되길 원할 경우
2) 특정 기능이 Character에만 있는 경우
1or2의 경우에 변환을 이용하시면 됩니다.

Windfall님의 프로필 이미지
Windfall

작성한 질문수

질문하기