C++로 만들게 될 경우 블루프린트를 굳이 사용할 필요는 없지만 대략적으로 어떻게 돌아가는지는 알아야 하고 경우에 따라 블루프린트를 적절히 조합해서 사용하는게 더 편한 경우가 있다. 케바케이다.
큰 프로젝트이고 성능에 중요함이 있다고 하면 C++로 무조건 가야하고,
블루프린트는 프로토타이핑 할때는 좋으나 성능이 10배가량 느리기 때문에 남발하면 안된다.
블루프린트 클래스도 생성을 누르면 C++클래스와 마찬가지로 부모 클래스를 선택하게 된다.
C++클래스와 다르게 rename이나 삭제도 자유롭게 할 수 있다.
마치 비주얼 코딩을 하는 느낌이다.
블루프린트 클래스의 컴파일은 가볍지만 블루프린트 클래스 자체가 가벼운건 절대 아니다.
GameModeBase 클래스에서 블루프린트 클래스를 기본값으로 설정하려면 ConstructorHelpers로 불러와야 한다.
AMyGameModeBase::AMyGameModeBase()
{
// 기존 문법
//DefaultPawnClass = AMyCharacter::StaticClass();
static ConstructorHelpers::FClassFinder<ACharacter>
BP_Char(TEXT("Blueprint'/Game/Blueprints/BP_MyCharacter.BP_MyCharacter_C'"));
if (BP_Char.Succeeded())
{
DefaultPawnClass = BP_Char.Class;
}
경로 뒤에 _C를 붙이게 되는데 규칙이다.
void AMyCharacter::UpDown(float Value)
{
AddMovementInput(GetActorForwardVector(), Value);
}
void AMyCharacter::LeftRight(float Value)
{
AddMovementInput(GetActorRightVector(), Value);
}
void AMyCharacter::Yaw(float Value)
{
AddControllerYawInput(Value);
}
둘의 결과는 동일하다.
물론 블루프린트 클래스와 아래의 코드는 서로 다른 클래스이긴 하지만 똑같이 작동하게 구현할 수 있다는 것을 확인할 수 있다.
블루프린트 클래스는 C++ 클래스를 상속 받아서 사용한다. 당연히 내가 만들어둔 클래스를 상속받아 사용하는 것도 가능하다.
하지만 반대로 블루프린트 클래스를 상속받는 C++ 클래스를 만드는 것은 불가능하다.
꼭 캐릭터만 블루프린트로 만들라는 법은 없다. 게임 모드도 블루프린트 클래스로 만들어서 편하게 관리할 수도 있다.
만들어진 블루프린트 클래스는 유니티의 prefab과 같은 것이라고 보면 될 것 같다.
'언리얼 엔진 > 언리얼 엔진4 입문' 카테고리의 다른 글
[UE4 입문] 스테이트 머신 (0) | 2022.09.02 |
---|---|
[UE4 입문] 애니메이션 기초 (0) | 2022.09.01 |
[UE4 입문] 캐릭터 생성 (0) | 2022.09.01 |
[UE4 입문] 게임플레이 프레임워크 (0) | 2022.09.01 |
[UE4 입문] 로그와 디버깅 (0) | 2022.09.01 |