클래스를 찾아올 때 맵에 로드된 적 없는 클래스를 찾으려면 아래 함수를 사용해서 찾으면 된다.
ConstructorHelpers::FClassFinder
주로 생성자에서 사용된다.
예시)
static ConstructorHelpers::FClassFinder<APawn>
ClassFinder(TEXT("/Game/Blueprints/Pawns/BP_MyPawn"));
맵에 이미 로드된 클래스를 찾아오려면 아래 함수를 사용하면 된다.
FindObject
예시)
UClass* CoinClass = FindObject<UClass>(nullptr,
TEXT("/Script/Engine.Blueprint'/Game/Blueprint/CoinMap/BP_Coin.BP_Coin_C'"));
유니티에선 각 오브젝트마다 ontriggerenter함수를 이용해 trigger처리를 해줬다.
언리얼에서도 찾아보니 비슷한 역할을 하는 함수가 있다.
OnComponentBeginOverlap
델리게이트 함수이고, 객체의 OnComonentBeginOverlap델리게이트에 AddDynamic을 통해 함수를 바인딩 해주는 형식이다.
아래와 같은 OnTrigger함수를
void ABaseTriggerBox::OnTrigger(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
if (!SpawnedActor) return;
ITriggerInterface::Execute_OnTrigger(SpawnedActor, OverlappedComponent, OtherActor, OtherComp, OtherBodyIndex, bFromSweep, SweepResult);
}
아래 코드처럼 OnComponentBeginOverlap에 AddDynamic을 이용해 바인딩해준다.
UShapeComponent* ShapeComponent = GetCollisionComponent();
ShapeComponent->OnComponentBeginOverlap.AddDynamic(this,&ThisClass::OnTrigger);