본문 바로가기

언리얼게임프로젝트/TPS C++

프로젝트 준비하기 UClass, UObject, CDO

TPSProject라는 이름으로 Game>Blank Templete C++ StarterPack포함해서 프로젝트를 만듭니다.

Thirdperson은 에디터가 로딩후 블루프린트만 Add합니다.(이렇게하면 Thirdperson의 코드가 포함되지 않는다고 합니다.)

ThirdPerson Pack이 임포트되면 Characters폴더가 생기고 하위 UE4 Meshes아래 SK_Mannequin이 있습니다. 레퍼런스를 카피해 C++상에서 메시를 임포트하는 레퍼런스로 씁니다.

 

'언리얼 C++ 게임 개발의 정석/1. 개발 환경 셋팅' 카테고리의 글 목록

 

study-room.tistory.com

Unreal 헤더툴은 헤더파일을 분석해 클래스의 메타정보를 UClass에 저장합니다. 클래스의 속성이나 멤버함수를 호출하는데 활용합니다.

컴파일이 완료되면 UClass가 만들어지고 에디터를 실행시키면 UObject를 상속받는 언리얼 오브젝트의 생성자에서 인스턴스를 생성하는데 이를 클래스 기본객체 Class Default Object(CDO)라고 합니다. 

결론적으로 언리얼엔진에서 생성자는 인스턴스를 초기화해 CDO를 만들기 위한 목적입니다.

결론은 생성자부분에 블루프린트에서 했던 초기 모양및 설정을 해야 합니다.

 

 

UE5 - 언리얼 UClass, CDO, UHT, New Object, Constructor, C++ 개념 및 정리

언리얼은 무조건 UObject에서 파생된다. 언리얼엔진에서 관리되는 가비지 컬렉션 쓸라면 UObject를 상속 받아야함 1. CDO UClass() 매크로를 구성하면 언리얼 클래스가 된다. 컴파일 단계에서 언리얼 오

dlemrcnd.tistory.com

언리얼에디터에서 C++ 클래스를 Character를 부모로 만듭니다. TPSPlayer로 이름을 만들고 Public을 클릭합니다.

Visual Studio에서 TPSPlayer.cpp 를 열고 맨먼저 메시를 임포트 합니다. TempMesh안의 경로는 아까 SK_Manequin을 우클릭 레퍼런스를 복사하면 됩니다. 메시컴포넌트는 기본적으로 Character Class에 포함되어 있으므로 GetMesh()를 이용해 접근할수 있습니다.

	ConstructorHelpers::FObjectFinder<USkeletalMesh> TempMesh(TEXT("SkeletalMesh'/Game/Characters/Mannequin_UE4/Meshes/SK_Mannequin.SK_Mannequin'"));
	if (TempMesh.Succeeded())
	{
		GetMesh()->SetSkeletalMesh(TempMesh.Object);
		GetMesh()->SetRelativeLocationAndRotation(FVector(0, 0, -90), FRotator(0, -90, 0));
	}

 

TPSPlayer.h에 카메라 컴포넌트변수를 2개 추가하고  추가해 줄겁니다.

public:
	UPROPERTY(VisibleAnywhere, Category = "Camera")
	class USpringArmComponent* springArmComp;

	UPROPERTY(VisibleAnywhere, Category = "Camera")
	class UCameraComponent* tpsCamComp;

TPSPlayer.cpp