BlueprintGeneratedClass
는 블루프린트로 생성된 클래스를 의미하며, Unreal Engine에서 블루프린트가 컴파일되었을 때 자동으로 생성되는 클래스입니다. 이 클래스는 블루프린트에서 작성한 모든 함수, 변수, 로직을 포함하며, 최종적으로 객체로 스폰되기 위해 필요한 정보를 담고 있습니다.
간단히 말해, BlueprintGeneratedClass
는 블루프린트의 실행 가능한 코드와 데이터가 결합된 결과물로, C++의 UClass와는 다소 차이가 있습니다. 일반적으로 BlueprintGeneratedClass
는 블루프린트로 작성된 액터, 컴포넌트, UI 등의 기능을 실제 게임에서 사용할 수 있게 해줍니다.
UClass와 BlueprintGeneratedClass의 차이점
UClass
는 C++ 코드에서 직접 정의된 클래스입니다. BlueprintGeneratedClass
는 블루프린트에서 정의된 클래스의 실행 가능한 형태를 뜻합니다.BlueprintGeneratedClass
는 UClass
로부터 파생된 클래스이므로, 모든 BlueprintGeneratedClass
는 UClass
처럼 사용할 수 있지만, 반대는 성립하지 않습니다.BlueprintGeneratedClass
에는 블루프린트 이벤트 그래프와 함수가 포함되어 있어, 런타임 중 Event Graph
로직을 실행할 수 있게 합니다.블루프린트 클래스의 로드와 사용
BlueprintGeneratedClass
를 통해 블루프린트의 모든 논리와 변수 정의가 포함된 런타임에 실행 가능한 클래스가 생성됩니다.StaticLoadClass
나 LoadObject
등을 통해 C++에서 로드한 후 스폰하여 사용할 수 있습니다.블루프린트 클래스의 경로에서 BlueprintGeneratedClass
를 로드하여 사용하려면 다음과 같은 절차를 따릅니다.
StaticLoadClass
를 사용하여 블루프린트 클래스의 경로에서 BlueprintGeneratedClass
를 로드할 수 있습니다.BlueprintGeneratedClass
는 UClass
에서 파생된 클래스이기 때문에 UClass
로 캐스팅하여 SpawnActor
로 스폰할 수 있습니다.예제 코드:
// 블루프린트 경로에서 BlueprintGeneratedClass 로드
FString BlueprintPath = "/Game/Blueprints/MyWeaponBlueprint.MyWeaponBlueprint_C";
UClass* LoadedClass = StaticLoadClass(AActor::StaticClass(), nullptr, *BlueprintPath);
if (LoadedClass && LoadedClass->IsChildOf(AActor::StaticClass()))
{
AActor* SpawnedActor = GetWorld()->SpawnActor<AActor>(LoadedClass);
if (SpawnedActor)
{
UE_LOG(LogTemp, Warning, TEXT("BlueprintGeneratedClass에서 액터 스폰 성공: %s"), *SpawnedActor->GetName());
}
else
{
UE_LOG(LogTemp, Error, TEXT("스폰 실패"));
}
}
else
{
UE_LOG(LogTemp, Error, TEXT("BlueprintGeneratedClass 로드 실패 또는 AActor의 하위 클래스가 아닙니다."));
}
BlueprintGeneratedClass
는 블루프린트에서 정의한 모든 논리, 이벤트, 함수가 포함된 형태로 런타임에 객체를 생성하고 동작시킬 수 있습니다.BlueprintGeneratedClass
는 C++와 블루프린트를 통합하여 사용할 때 매우 유용합니다. 예를 들어, C++ 코드에서 블루프린트를 로드하고 특정 클래스의 하위 클래스를 확인한 후, 동적으로 스폰하여 게임에 추가할 수 있습니다.BlueprintGeneratedClass
를 사용하는 상황BlueprintGeneratedClass
는 이러한 기능을 통해 블루프린트를 통해 작성된 로직을 C++ 코드에서 쉽게 사용할 수 있도록 하는 Unreal Engine의 중요한 시스템입니다.