● 지금 타이틀 레벨에서 추가로 구현할 수 있는 것
1. 새 게임을 누르면 다음 레벨로 이동하기

코드로는 미리 UGameplayStatics의 OpenLevel함수를 사용했지만 정작 그 대상인 클래스 선택 레벨은 없는 상태다. 그래서 그 상태에서는 눌러도 아무 일도 생기지 않는다. 그래서 클래스 선택 레벨을 만들었다.
이 상태에서 작동해보니 아무것도 없는 빈 레벨인 클래스 선택 레벨이 잘 열리는 것을 확인했다.
2. 설정 패널을 누르면 타이틀 버튼을 잠시 숨기기

지금은 만들었던 블루프린트 편집화면대로, 설정 화면을 열면 타이틀 화면 위에 그대로 설정 패널이 출력된다. 패널이 열린 상태지만 뒤에 덮힌 버튼들은 여전히 누를 수 있는 상태다. 어제 잠깐 언급된 내용 중 패널이 열린 동안 버튼이 잠시 사라진다고 했지만 정작 그 기능은 없는 상태다.
private:
//타이틀 버튼이 있는 세로 박스
UPROPERTY(meta = (AllowPrivateAccess = true, BindWidget))
TObjectPtr<UWidget> TitleButtonsBox;


모든 버튼마다 일일이 숨길 수도 있지만 그것보다는 그 버튼을 자식으로 둔 세로 박스를 숨기는 쪽이 더 편하다. 그래서 세로 박스를 코드에서 다룰 수 있도록 코드의 헤더에서 변수를 선언한다. 그리고 위젯과 잘 연동하는지도 확인한다. 숨기는 것 외에는 다룰 것이 없으니 변수 타입은 세로 박스(UVerticalBox)가 아닌 그냥 위젯(UWidget)으로 선언했다.
public:
//설정 패널을 닫을 때 버튼 복구
void RestoreTitleButtons();
설정 패널을 출력하는 함수는 이미 설정 버튼으로서 만들었기 때문에 버튼을 복구하는 함수만 추가로 선언한다.
void UT3TitleLevelWidget::OnClickSettingsButton()
{
SettingsPanel->OpenSettingsPanel();
TitleButtonsBox->SetVisibility(ESlateVisibility::Collapsed);
}
void UT3TitleLevelWidget::RestoreTitleButtons()
{
TitleButtonsBox->SetVisibility(ESlateVisibility::Visible);
}
설정 패널을 여는 함수에서는 설정 패널에 있는 패널 출력 함수를 실행하면서 버튼이 있는 세로 박스를 숨긴다. 그리고 버튼을 복구하는 함수에서는 세로 박스를 다시 보여준다.
2-1. 설정 패널은 게임 내에서도 열 수 있다.
원래라면 타이틀 화면 위젯의 버튼 복구 함수를 설정 패널을 닫는 확인 버튼 함수에서 직접 호출하려고 했다. 하지만 여기서 하나 걸리는 점을 발견했다. 설정 패널은 게임 내에서도 열 수 있어야 한다는 기획이 있기 때문이다. 그러면 이 블루프린트 위젯 그대로 가져다가 사용할텐데, 게임 내에서는 타이틀 화면 위젯이 존재하지 않는다. 따라서 게임 내에서 그대로 쓸거면 타이틀 화면 위젯에 직접 접근하는 코드를 사용하면 안된다.
이러한 문제에 대한 해법은 다음과 같다.
DECLARE_DELEGATE(FOnClosePanel);
UCLASS()
class DESECRATION_API UT3SettingsPanel : public UUserWidget
{
GENERATED_BODY()
...
public:
//설정 패널 닫을 때 실행할 내용
FOnClosePanel OnClosePanel;
...
}
델리게이트를 이용하면 된다. 그러면 타이틀 위젯이든, 게임내 다른 위젯이든 이 설정 패널을 가지고 있다면 설정 패널의 델리게이트에 설정 패널을 닫을 때 실행할 내용을 등록하면 된다. 타이틀 위젯에서는 버튼을 복구하는 함수를 등록하면 된다.
void UT3SettingsPanel::OnClickConfirmButton()
{
//패널 닫기
SetVisibility(ESlateVisibility::Collapsed);
//패널을 닫을 때 해야할 일
OnClosePanel.ExecuteIfBound();
}
설정 패널을 닫을 때 이 델리게이트를 실행한다.
void UT3TitleLevelWidget::NativeConstruct()
{
...
//설정 패널을 닫으면 타이틀 버튼을 복구
SettingsPanel->OnClosePanel.BindUObject(this, &ThisClass::RestoreTitleButtons);
}
앞서 말한대로 타이틀 화면 위젯에서는 설정 패널의 이 델리게이트에 버튼을 복구하는 함수를 등록한다.
'언리얼엔진 학습 및 과제' 카테고리의 다른 글
| 소울라이크 팀 프로젝트 Desecration : 시작부터 MVP까지 (5) (0) | 2026.03.24 |
|---|---|
| 소울라이크 팀 프로젝트 Desecration : 시작부터 MVP까지 (4) (0) | 2026.03.23 |
| 소울라이크 팀 프로젝트 Desecration : 시작부터 MVP까지 (2) (0) | 2026.03.19 |
| 소울라이크 팀 프로젝트 Desecration : 시작부터 MVP까지 (1) (0) | 2026.03.18 |
| 액터 리플리케이션을 이용한 게임 제작 (12) (0) | 2026.01.14 |