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() 함수는 대상이 클래스타입일 때 사용한다.