어두운 배경이 싫으시다면 페이지 우측 하단에 보이는 초승달 모양의 아이콘을 클릭하면 화이트모드로 변경됩니다. 초승달 모양 버튼 : `화이트/다크 모드` 전환 |
이번 포스팅을 통해 언리얼 엔진에서 플러그인을 만들고 그 안에 C++ 클래스를 추가하여 사용하는 방법과 함께 Export Packaging (외부 사용을 위한 패키징) 과정을 거쳐서 다른 프로젝트에서 사용하는 법까지 구성하여 3개의 포스팅을 거쳐서 설명하겠습니다.
플러그인을 생성하는 과정은 아래와 같은 환경에서 작업하였습니다. 참고하시어 작업하시길 바랍니다.
🔹OS : Windows 11
🔹엔진 버전 : Unreal Engine 5.4.4
🔹IDE : Visual Studio 2022 Community
🔹프로젝트 : C++ 빈 프로젝트(시작 콘텐츠 미포함)
※ 한글 언어로 설정하였기 때문에 한글 기준으로 설명하겠습니다.
1. 플러그인 생성 및 사용 로드맵
'플러그인'은 프로젝트 작업 시 언리얼 에디터에서 연결하여 사용하기 위한 인터페이스 같은 역할을 수행합니다. 즉, 콘센트에 플러그를 꽂으면 연결이 된다고 생각하시면 됩니다.
그럼 무엇을 연결시키기 위함인가? 바로 '모듈'입니다. C++ 프로젝트를 작업해 보았다면 Source 폴더에 들어있는 프로젝트 이름의 모듈 소스들을 봤을 겁니다. 해당 모듈은 일종의 블록이고, 언리얼에서는 이 블록을 프로젝트에 연결하여 사용하는 방식입니다. (마치 컴퓨터 메인모드 슬롯에 램이나 그래픽카드, CPU)
즉, 모듈 개발을 먼저 하고, 플러그인이라는 껍데기를 만들어서 패키징을 하고, 이 패키징 한 플러그인을 필요로 하는 프로젝트에서 연결하여 사용하는 것이 플러그인의 사용 로드맵이 되겠습니다. 이러한 로드맵은 아래 이미지와 같습니다.
먼저 모듈을 만들어봐도 되지만, 일단 플러그인을 생성하면 해당 이름으로 모듈까지 같이 생성해 주기 때문에 해당 포스팅에서는 1️⃣플러그인을 먼저 생성하고, 나중에 2️⃣모듈을 따로 빼서 모듈 작업을 다하고 다시 플러그인에 이식하고 3️⃣패키징하고 다른 프로젝트에서 사용하는 과정으로 설명하겠습니다.
2. 프로젝트 생성
먼저 프로젝트를 생성해 보겠습니다. 저는 플러그인에 C++ 클래스도 포함한 플러그인을 생성하기 위해서 'C++ 프로젝트'로 생성하였습니다.
물론 블루프린트 프로젝트에서도 플러그인을 만들 수 있지만 블루프린트 프로젝트에서 만든 플러그인은 '블루프린트 전용'으로 플러그인을 만든 것이기 때문에 C++ 모듈을 추가할 수 없습니다.
🔹라이브코딩 비활성화
위에서도 설명했듯이 프로젝트 작업할 때 플러그인은 연결 역할을 할 뿐 우리가 플러그인을 생성한 뒤 안에 있는 모듈을 수정 작업을 하고 이를 반영하는 작업은 '플러그인 모듈'을 작업하는 것이지 프로젝트 모듈을 작업하는 것이 아닙니다. 즉, 플러그인 모듈을 변경하여 컴파일하더라도 프로젝트에는 적용이 안 됩니다. (에디터 종료 후 다시 실행해야 함)
플러그인은 프로젝트를 로드할 때 에디터 상에서 플러그인 모듈을 연결합니다. 그래서 라이브코딩을 비활성화하여 C++ 클래스 작업 시 컴파일된 내용을 에디터에 링크하는 과정을 수행하지 않도록 합니다.
만약 라이브코딩을 활성화할 경우 아래 이미지처럼 '링크 실패' 오류 메시지가 나올 것입니다. 이때 코드 수정이나 생성 등의 작업은 이루어졌지만 프로젝트에 반영이 실패했다는 의미입니다.
3. 플러그인 생성
이제 플러그인을 생성해 보겠습니다. 에디터 좌측 상단에 [편집] - [플러그인]으로 이동합니다.
플러그인 브라우저가 열리면 좌측 상단에 '+추가' 버튼을 누르면 아래 이미지처럼 '새 플러그인' 창이 나타나고, 여기서 '공백', 즉 빈 플러그인을 생성합니다. 그리고 이름은 'PrintOutTest'로 작성한 뒤 '플러그인 생성' 버튼을 클릭합니다.
그러면 컴파일 과정을 거치면서 플러그인이 만들어질 것입니다. 이때 한 번 리컴파일이 되어서 생성된 플러그인과 프로젝트가 한 번 링크되어 로드됩니다. 또한 Visual Studio에는 아래와 같은 메시지가 나타나는데 '모두 다시 로드'를 하면 Visual Studio의 솔루션 탐색기에도 제대로 플러그인 모듈이 나타납니다. 프로젝트 폴더에는 'Plugins' 폴더가 생기고 그 안에 방금 생성한 플러그인 모듈이 있습니다.
4. 클래스 추가 및 사용
클래스 추가하는 방법은 UE4와는 다르게 UE5에서는 첫 C++ 클래스만 상단 툴바에서 [툴] - [새로운 C++ 클래스]로만 생성이 가능합니다. 해당 메뉴를 선택하면 'C++ 클래스 추가' 브라우저가 나타납니다.
🟦 C++ 클래스 추가하기
로그를 찍어줄 액터를 만들기 위해 액터 선택 후 다음으로 이동합니다. (아래는 다음에서 이름이 입력된 상태로 돌아와서 찍은 이미지라 '클래스 생성'이 활성화된 모습이지만 처음에는 비활성화되어 있습니다.)
다음 화면에서 이름 작성칸 우측에 보면 모듈을 선택할 수 있는 박스가 있습니다. (처음에는 프로젝트 모듈인 'MakePlugin') 이 모듈 박스를 클릭하여 새로 생성한 'PrintOutTest' 플러그인 모듈로 변경하고, 이름을 작성합니다. 클래스 타입은 모듈 선택 시 자동으로 '퍼블릭(Public)'이 선택됩니다.
퍼블릭으로 설정하면 헤더파일은 Public 폴더에, 프라이빗을 선택하면 Private 폴더에 저장됩니다. 완료하였으면 '클래스 생성' 버튼을 눌러 C++ 액터 클래스를 생성합니다.
생성된 다음에는 다시 한번 Visual Studio에서 '모두 다시 로드'하여 업데이트해주고, 언리얼 에디터는 종료합니다. 어차피 플러그인의 모듈은 실시간으로 반영되는 것이 아니기 때문에 Visual Studio에서 코드작업 후 빌드하여 에디터를 다시 실행하면 로드된 모습을 볼 수 있습니다.
🟦 C++ 클래스 작업 및 빌드
클래스를 생성하고 에디터를 종료한 뒤 Visual Studio로 갑니다. 그리고 생성한 C++ 클래스의 소스('PrintActor.cpp') 파일의 `BeginPlay()`에 아래와 같이 로그를 출력하는 코드를 입력합니다.
UE_LOG(LogTemp, Warning, TEXT("Print Out Plugin Test!"));
코드 입력 후 프로젝트를 빌드합니다. 아래는 빌드가 완료되었을 때 출력창 모습입니다. 보시면 플러그인 모듈 라이브러리가 에디터에 Link 되었다는 문구가 보일 겁니다.
빌드가 성공하였다면 이제 프로젝트를 다시 실행해서 에디터를 띄웁니다. 그러면 콘텐츠 브라우저에 플러그인 모듈의 'C++ 클래스' 폴더가 나타난 모습을 볼 수 있으며, 이제 여기서 C++ 클래스를 추가할 수 있습니다.
생성한 PrintActor 클래스를 레벨에 올려놓고 실행합니다. 그러면 에디터 출력 로그 창에 노란색으로 위에서 작업한 출력문구가 나타나는 것을 볼 수 있습니다.
여기까지가 아주 기초적인 플러그인 생성과 C++ 클래스 사용법이었습니다. 다음 포스팅에서는 여기서 작업한 플러그인 안에 있는 모듈을 밖으로 빼서 프로젝트의 서브모듈로 추가한 뒤 작업하는 과정을 포스팅하도록 하겠습니다. (맨 처음 로드맵의 첫 부분)
🔸플러그인 모듈 분리하여 소스코드 작업
구독 및 좋아요는 컨텐츠를 생산하는데 많은 도움이 됩니다. 😊
감사합니다.