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과 같은 것이라고 보면 될 것 같다.

+ Recent posts