플러그인 등록
개발 일지2024. 11. 30. 22:46
플러그인
- 특정 목적을 위해 디자인된 코드와 데이터의 집합
- 플러그인으로 런타임이나 게임플레이, 에디터에 관련된 기능을 추가할 수 있다.
- 하나 이상의 모듈로 만들어진다.
- 모듈은 C++코드로 만들어진 별개의 유닛
- 모듈은 별개의 build.cs 파일을 포함한다.
- 개별 작업에 대한 고유한 기능을 캡슐화한 형태
- Uasset(Mesh, Texture)을 포함하지 않는 코드로만 이루어짐
- 프로젝트 자체도 모듈이 될 수 있다
- 만드는법 자체도 우선 굉장히 간단한데, edit->plugin에서 Add->Blank(옵션 선택)선택하고 원하는 대로 정보 작성하면 바로 생성된다.
Setup Dependencies
- 여기서 uplugin 파일로 들어가면 플러그인에 대한 여러 정보들을 확인할 수 있다.
- 해당 파일에서 기능에 필요한 다른 플러그인도 추가할 수 있다.
"Modules": [
{
"Name": "MultiplayerSessions",
"Type": "Runtime",
"LoadingPhase": "Default"
}
],
"Plugins": [
{
"Name": "OnlineSubsystem",
"Enabled": true
},
{
"Name": "OnlineSubsystemSteam",
"Enabled": true
}
]
- 그리고 플러그인의 Build.cs 파일에 DependencyModule을 추가해준다.
PublicDependencyModuleNames.AddRange(
new string[]
{
"Core",
"OnlineSubsystem",
"OnlineSubsystemSteam",
// ... add other public dependencies that you statically link with here ...
}
);
- 그리고 빌드하면 끝
Session 관리 로직을 구현할 Parent Class
- Game Instance
- 게임 생성시 같이 생성됨
- 게임이 꺼질때까지 없어지지 않음
- 레벨 이동시에도 유지되어 항상 같은 Game Instance를 사용 가능
- Game Instance Subsystem
- 게임 인스턴스 단위로 유지됨
- 자동으로 엔진에 의해 생성되며, 엔진이 수명주기를 관리
- 어느 시점에 초기화되고 종료될지는 엔진의 구조에 따라 결정됨 (별도로 메모리 해제 생각하지 않아도 됨)
- 게임 인스턴스가 생성된 후 생성되며, 게임 인스턴스가 없어질 때 없어지므로 세션 관련 로직이 들어가기 알맞음
Subsystem 생성
- 에디터의 Contents browser -> C++ 클래스에 새롭게 하나 추가
- GameInstanceSubsystem 클래스를 상속받아 만들고, 타겟 모듈을 우리가 추가한 플러그인으로 설정
- 생성한 후, 헤더와 cpp파일에 Sessioninterface의 5가지 함수를 추가하고 델리게이트 및 콜백함수까지 선언
- 이후 내부 로직 구현
함수 동작 테스트를 위한 메뉴 구성
- 플러그인 추가시 메뉴까지 같이 호환되도록 플러그인의 public 폴더에 UserWidget 생성
void UMenuUI::MenuSetup()
{
AddToViewport();
SetVisibility(ESlateVisibility::Visible);
bIsFocusable = true;
UWorld* World = GetWorld();
if (World) {
APlayerController* PlayerController = World->GetFirstPlayerController();
if (PlayerController) {
FInputModeUIOnly InputModeData;
InputModeData.SetWidgetToFocus(TakeWidget());
InputModeData.SetLockMouseToViewportBehavior(EMouseLockMode::DoNotLock);
PlayerController->SetInputMode(InputModeData);
PlayerController->SetShowMouseCursor(true);
}
}
}
- 생성된 MenuUI 클래스에 기초 로직 세팅
- 간단하게 마우스 커서 옵션만 설정 후 widget blueprint 추가
- 테스트용으로 간단하게 Host버튼, Join버튼 추가
- 메인 레벨의 블루프린트를 열어 BeginPlay노드로 위젯 생성
'개발 일지' 카테고리의 다른 글
플러그인 UI - 2 (0) | 2024.12.02 |
---|---|
플러그인 UI - 1 (0) | 2024.12.01 |
Join Session (0) | 2024.11.29 |
OnlineSubsystem Steam 연결 및 Create Session (0) | 2024.11.27 |
Listen Server와 Dedicated Server (0) | 2024.11.26 |
댓글()