티스토리 뷰

반응형

상속클래스.h

void Interact_Implementation() override; //블루프린트에서도 사용가능//
virtual void InteractPure() override; //c++에서만 사용함//

상속클래스.cpp

void ACharacter::Interact_Implementation()
{
	UE_Log(LogTemp, Warning, TEXT("Implementation");
}

void ACharacter::InteractPure()
{
	UE_Log(LogTemp, Warning, TEXT("Pure");
}

이렇게 정의내린 함수는 두가지인데 위에 함수는 블루프린트에서의 호출을 동시에 사용할수 있으면 아래있는 가상함수는 c++에서만 정의내려 사용할수 있다.

 

인터페이스 메시징받을 클래스.cpp

OverlapCollision->GetOverlappingActors(OverlapActors);
	for (uint8 i = 0; i < OverlapActors.Num(); i++)
	{
    	//액터들의 클래스를 가져와 UWeapon_Interface의 정적클래스를 가져와 Interface를 상속받고 있는 클래스만 실행한다.//
		if (OverlapActors[i]->GetClass()->ImplementsInterface(UWeapon_Interface::StaticClass()))
		{
        		//직접 액터에 캐스터를 사용하여 인터페이스에 오버라이딩된 액터의 함수를 호출하는방식이다.//
        		//직접 바로 함수를 호출하기에 캐스팅할 액터는 선언하지 않는다.//
        		//c++에서만 호출할수 있다.//
        		Cast<IWeapon_Interface>(OverlapActors[i])->InteractPure();	
            
            		//기존에서 사용하는 블루프린트에서 호출하는 방식으로 Implementation을 붙어주면 블루프린트에서도 호출을 가능하게 만들어준다.//
            		//아래와 같이 Execute_함수이름(호출객체, 입력값) 이런식으로 호출할수있다.//
            		//블루프린트와 c++에서도 사용할수 있다.//
			IWeapon_Interface::Execute_Interact(OverlapActors[i]);
		}
	}

인터페이스를 직접 선언하여 호출하는법.cpp

IWeapon_Interface* Interface = Cast<IWeapon_Interface>(OverlapActors[i]);
if(Interface)
{
	Interface->InteractPure();	//c++에서만 사용가능//
	Interface->Execute_Interact(OverlapActors[i]);	//블루프린트, c++에서도 사용가능//
}

Interface 가져오는 방법.

1. 각클래스의 Inteface상속여부를 확인한 다음 Interface를 직접 호출하는방법.

2. 액터의 Interface를 캐스팅하여 선언한 다음 호출하는 방법.

 

Interface 함수 호출하는 방법.

{

1. Inteface를 직접 호출하였을때.

1-1. 형변환하여 액터의 오버라이딩한 함수를 호출하는방법. (c++에서만 호출가능)

1-2. 오버라이딩한 함수에 (_Implementation)붙이며 Implementation이 붙은 함수를 호출할때는 "Execute_함수"를 호출하는 방법. (블루프린트와 c++에서 호출가능)

 

2.Inteface를 선언하여 호출하였을때.

2-1. 선언한 Inteface변수에서 그냥 함수호출하는 방법. (c++에서만 호출가능)

2-2. 선언한 Inteface변수에서 호출하는 함수가 Implementation이 붙어있는 경우 "Execute_함수"를 함수호출하는 방법. (블루프린트와 c++에서 호출가능)

}

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함