Unreal Engine/C++
Unreal Engine4 C++ 특정 액터가 어떤 타입인지 확인하는 방법
한돌이
2021. 3. 24. 22:37
GetOwner() 같은 함수로 액터를 받아올 경우 해당 액터의 클래스 타입이 무엇인지 확인하는 방법으로 2가지 방법이 있다.
OnwerPCECharacter = GetOwner();
if (OwnerPCECharacter->IsA(APCEPlayerCharacter::StaticClass()))
{
OwnerType = EOwnerType::OwnerType_Player;
}
else if (OwnerPCECharacter->IsA(APCEEnemyCharacter::StaticClass()))
{
OwnerType = EOwnerType::OwnerType_Enemy;
}
else
{
return;
}
IsA() 함수를 사용한 방법과
OwnerPCECharacter = GetOwner();
if (OwnerPCECharacter->GetClass()->ImplementsInterface(UInterface_PCEPlayerCharacter::StaticClass()))
{
OwnerType = EOwnerType::OwnerType_Player;
}
else if (OwnerPCECharacter->GetClass()->ImplementsInterface(UInterface_PCEEnemyCharacter::StaticClass()))
{
OwnerType = EOwnerType::OwnerType_Enemy;
}
else
{
return;
}
해당 액터가 상속한 인터페이스를 통한 확인방법이 있다.
그 중 ImplementsInterface의 내부 함수는 IsChildOf()를 사용하고 있다.
IsA() 함수와 IsChildOf() 함수는 사용목적이 같은데 IsA() 함수는 대상이 액터일 경우에 사용하고 IsChildOf() 함수는 대상이 클래스타입일 때 사용한다.