오늘은 기존에 블루프린트로 만들고 넣었던 엑터를 C++을 사용해서 넣는 것을 배웠습니다. 일단 같이 보시죠.

일단 지난 번 만들었던 빈 프로젝트는 어떠한 콘텐츠가 없기에 Migrate하겠습니다. 이민갑시다 리소스님~~


위에 상단에서 tools 누르고 add new class해서 C++으로 만든 엑터 생성!

빈 깡통 아이템씨를 만들었습니다. 아무것도 없습니다.

이렇게 넣어줘도 휑~~합니다. Component가 없니까 당연한 거겠죵? 그럼 만들어줍시다.

Scene(위치값)이 있어야겠죠? 이것을 일단 루트 값으로 지정하겠습니다! 그리고 뼈대도 필요하니 메쉬도 만들었습니다.

차례대로 SceneRoot를 생성하고 루트 컴포넌트로 설정하고 레퍼런스 따와서 다시 그걸 가져 오고 가져온 메쉬와 메티리얼을 스태틱 메쉬에 적용하면 이제 기본적인 컴포넌트들은 있으니까 적용이 됩니다~!

짜잔! 황금빛 체어 완성! 제 미래도 이렇게 황금빛이었으면 좋겠네요. 아무튼 이렇게 해서 C++로 엑터를 생성하고 레벨에 넣어봤습니다.
언리얼에서 사용하는 대부분의 클래스가 상속받는 가장 기본이 되는 클래스입니다.
쉽게 말하면 언리얼 오브젝트들의 뿌리 같은 느낌입니다. 만물의 어머니 같군용.
다만 UObject 자체는 월드에 직접 배치할 수 없습니다.
UObject를 기반으로 만들어진 클래스로, 실제로 월드에 배치할 수 있는 클래스입니다.
그래서 이번에 만든 AItem도 AActor를 상속받아서 레벨에 배치할 수 있었습니다.
public 영역에 있는 헤더나 클래스는 외부에서 접근할 수 있지만, private은 외부에서 직접 접근할 수 없습니다.
해당 헤더 파일이 한 번만 컴파일되도록 보장해주는 역할을 합니다.
언리얼에서 가장 기본적으로 사용되는 헤더입니다.
엔진에서 사용하는 기본적인 타입, 매크로, 기능 등을 가져오기 때문에 거의 모든 .h 파일의 위쪽에서 볼 수 있습니다.
AActor 클래스를 사용하기 위해 포함하는 헤더입니다.
언리얼 헤더 툴(UHT)이 자동으로 생성하는 코드를 포함합니다.
항상 헤더 파일의 마지막 #include로 위치해야 합니다.
위치를 바꾸면 컴파일 오류가 발생할 수 있습니다.
언리얼의 리플렉션 시스템을 사용하기 위한 매크로입니다.
이를 통해 언리얼이 해당 클래스를 인식하고 블루프린트 등에서 사용할 수 있게 됩니다.
언리얼에서는 Actor를 상속받는 클래스에 보통 A 접두사를 붙입니다.
그래서 Actor → AItem처럼 작성합니다.
현재 프로젝트의 모듈인 SpartaProject에서 해당 클래스를 다른 모듈에서도 사용할 수 있도록 해주는 매크로입니다.
Component에 제대로 초기화하지 않은 값이 있다면 쓰레기 값이 들어갈 수 있기 때문에 초기화가 중요합니다.
위치, 회전, 크기 같은 Transform 정보를 가지고 있는 Component입니다.
그래서 다른 Component들의 Root로 사용하기 좋습니다.
화면에 실제로 보이는 3D 모델의 뼈대(?)라고 생각하면 편할 것 같습니다. 블프로 할 때 많이 만졌던 그 친구 맞습니당.
Static Mesh에 적용되는 재질이나 색상, 텍스처 등의 외형을 결정합니다.
기존에 블프로 했던 내용들을 C++로 하는 거라서 감회가 새로웠습니다. 딱히 뭔가를 엄청 새롭게 배웠다기보다는, 기존에 블루프린트로 구현했던 내용을 C++로 다시 해보면서 복습하는 느낌이었습니다.
블루프린트로 할 때는 그냥 컴포넌트 추가하고 연결하면 됐던 것들이 C++에서는 직접 생성하고 연결해줘야 해서, "아 이게 내부적으로는 이렇게 되어 있었구나" 하는 느낌도 조금 받았습니다.
아직은 C++로 언리얼을 다루는 게 익숙하지 않지만 하나씩 알아가는 중입니다. 언젠가는 블프로 했던 것보다 더 많은 걸 C++로 하는 날이 올 것이라고 믿습니다.