▣ TArray<AActor*> FoundDoors;
UGameplayStatics::GetAllActorsOfClass(GetWorld(), AActor::StaticClass(), FoundDoors);
- FoundDoors라는 TArray<AActor*> 배열을 생성합니다.
UGameplayStatics::GetAllActorsOfClass(GetWorld(), AActor::StaticClass(), FoundDoors);
현재 World에 존재하는 모든 AActor 타입의 액터를 검색하여 FoundDoors 배열에 저장합니다.
- AActor::StaticClass()는 모든 액터의 부모 클래스이므로, 모든 액터가 포함됩니다.
만약 특정 클래스의 액터만 찾고 싶다면 AActor::StaticClass() 대신 해당 클래스(ABP_ChapterCardKeyDoor::StaticClass())를 사용해야 합니다.
▣ for (AActor* Actor : FoundDoors)
- FoundDoors 배열에 있는 모든 액터를 순회하면서 Actor 변수에 담아 확인합니다.
▣ FString ActorClassName = Actor->GetClass()->GetName();
- 현재 순회 중인 Actor의 클래스 이름을 문자열(FString)로 가져옵니다.
▣ if (ActorClassName == TEXT("BP_ChapterCardKeyDoor_C"))
ActorClassName이 "BP_ChapterCardKeyDoor_C" 인지 비교합니다.
"BP_ChapterCardKeyDoor_C"는 언리얼 엔진에서 블루프린트 클래스
(BP_ChapterCardKeyDoor)의 C++ 내부 이름입니다.
블루프린트 클래스를 찾을 때 "_C"가 붙은 형태로 이름이 반환됩니다.
이 방법은 다소 비효율적이며, 타입을 직접 캐스팅하는 것이 더 좋습니다.
▣ UFunction* DoorOpenFunction = Actor->FindFunction(FName("DoorOpen"));
FindFunction(FName("DoorOpen"))을 사용하여 액터가 "DoorOpen" 이라는 이름의 함수를 가지고 있는지 확인합니다.
DoorOpen은 블루프린트에서 만든 커스텀 이벤트일 가능성이 큽니다.
▣ if (DoorOpenFunction)
{
Actor->ProcessEvent(DoorOpenFunction, nullptr);
}
DoorOpenFunction이 존재하면 ProcessEvent()를 호출하여 실행합니다.
ProcessEvent(UFunction* Function, void* Parameters)는 블루프린트 이벤트를 C++에서 호출할 때 사용되는 함수입니다.
nullptr을 인자로 전달했으므로, DoorOpen 함수는 파라미터가 없는 함수로 예상됩니다.
'[ Unreal5 ] > - 언리얼엔진5 실습' 카테고리의 다른 글
언리얼엔진5 c++ Random함수 (0) | 2025.03.27 |
---|---|
언리얼엔진5 c++ EndPlay(Actor 종료시점 호출함수) (0) | 2025.03.22 |
언리얼엔진5 meta (0) | 2025.03.04 |
언리얼엔진5 c++ virtual, override (0) | 2025.02.08 |
언리얼엔진5 c++ Class, 생성자, 기본멤버함수 (0) | 2025.02.08 |
댓글