블루프린트 없이 C++로 액터 생성하기

유영준·2022년 12월 31일
0
post-thumbnail

언리얼 엔진 공부를 시작했다
이득우의 언리얼 c++ 게임 개발의 정석를 보며 진행할 예정이고
유니티에서 비교할 대상이 있다면 비교를 해보려고도 한다

오늘은 분수를 만들어보려고 한다

사용한 에셋은 도서예제파일마켓스토어를 통해 구할 수 있다

언리얼엔진에서 C++ 파일은 Tools - New C++ Class 를 통해 가능하다

Parent Class 는 Actor로 지정해주자


Class의 이름을 Fountain으로 짓고 헤더 파일에서 다음과 같이 작성해주었다

UPROPERTY는 언리얼엔진 상의 프로퍼티라는 것을 알려주는 매크로이고,
괄호 안에 다양한 기능을 명시해 둘 수 있다

VisibleAnywhere 디테일 창에서 컴포넌트가 보이는 기능
EditAnywhere 디테일 창에서 컴포넌트를 수정할 수 있는 기능

이 두 기능은 흡사 Unity 상의 Serializable과 유사하다고 생각한다


이후 cpp파일에서 헤더 파일에서 선언한 컴포넌트들을 생성해주었다

CreateDefaultSubobject<> 는 Unity 상의 getComponent<> 와 유사하다고 생각한다
이를 통해 컴포넌트를 생성해주었고,

이들의 상속 관계 및 위치도 정리해주었다

부모 설정 (Body를 water의 부모로 설정)

// UE5
Water->SetupAttachment(Body);
// Unity3D
Water.transform.parent = Body.transform;

위치 변경

// UE5
Water->SetRelativeLocation(FVector(0.0f, 0.0f, 135.0f);
// Unity3D
Water.transform.position = new Vector3(0f, 0f, 135f);

이때 UE5에서는 Water를 포인터변수로 지정해주었기 때문에 ->를 사용하는것을 유의하자


마지막으로 에셋을 컴포넌트에 추가해줄 것이다

ConstructorHelperFObjectFinder를 통해 레퍼런스 주소를 받아온다

참고로 레퍼런스 주소는 에셋을 우 클릭 후 Copy Reference 를 통해 복사 할 수 있다

이후 에셋을 찾는데 성공했다면 컴포넌트를 에셋에 연결해줌으로서 에셋 제작이 끝나게 된다

profile
토비폭스가 되고픈 게임 개발자

0개의 댓글