WBP_GraphicsOptions
: WBP_OptionPanel 상속 받는 UserWidget 블루프린트 만들기
// 그래픽 품질 (하, 중, 상)
UENUM(BlueprintType)
enum class EGraphicQuality : uint8
{
Low UMETA(DisplayName="Low"),
Medium UMETA(DisplayName="Medium"),
High UMETA(DisplayName="High")
};
// 스크린 모드 (전체 화면, 창 모드, 테두리 없는 창 모드)
UENUM(BlueprintType)
enum class EDisplayMode : uint8
{
Fullscreen UMETA(DisplayName="Fullscreen"),
Windowed UMETA(DisplayName="Windowed"),
Borderless UMETA(DisplayName="Borderless")
};
// 보이스 입력 모드 (자동 감지, 눌러서 말하기)
UENUM(BlueprintType)
enum class EVoiceMode : uint8
{
OpenMic UMETA(DisplayName="Open Mic"),
Toggle UMETA(DisplayName="Toggle"),
PushToTalk UMETA(DisplayName="Push To Talk")
};
// 언어 타입
UENUM(BlueprintType)
enum class ELanguageType : uint8
{
Korean UMETA(DisplayName="Korean"),
English UMETA(DisplayName="English")
};
#pragma once
#include "CoreMinimal.h"
#include "Engine/DataTable.h"
#include "Data/Core/LNCoreDataType.h"
#include "S_GraphicsConfig.generated.h"
UENUM(BlueprintType)
enum class EGraphicsOptionType : uint8
{
Quality,
Resolution,
DisplayMode,
Brightness
};
USTRUCT(BlueprintType)
struct FS_GraphicsConfig : public FTableRowBase
{
GENERATED_BODY()
;
public:
// 어떤 옵션인지
UPROPERTY(EditAnywhere, BlueprintReadWrite)
EGraphicsOptionType OptionType;
// UI Rotator에 보여줄 텍스트들
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<FText> DisplayStrings;
// 실제 적용할 값들
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<EGraphicQuality> Qualities;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<FIntPoint> Resolutions;
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TArray<EDisplayMode> DisplayModes;
// Rotator 기본 선택 인덱스
UPROPERTY(EditAnywhere, BlueprintReadWrite)
int32 DefaultIndex = 0;
};
DT_GraphicsOptions
: S_GraphicsConfig 코드 상속받는 데이터 테이블

만들었던 GraphicsOption 추가하기
WBP_GraphicsOption의 부모클래스 WBP_OptionPanel에 함수 추가


WBP_GraphicsOptions에 부모클래스에서 만들었던 함수 추가

데이터 테이블 변수 추가하기

만들었던 데이터테이블 할당하기

Expose on Spawn ☑
WBP_OptionCycle의 TextOptionName, DafaultSelectedIndex, OptionArray을 Expose on Spawn 체크하기

Blueprint에서 Create Widget / Spawn Actor 노드를 사용할 때 해당 변수가 핀(Pin) 으로 노출됨
Expose to Spawn이 꺼져 있으면 생성 후에 Initialize()나 SetXXX() 함수로 추가로 값을 넣어야 함
→ 이 변수를 생성 시점에 외부에서 세팅할 수 있도록 핀으로 노출시켜주는 옵션
→ UI 위젯을 생성할 때 초기값을 바로 주입하고 싶을 때 필수 기능
(예) OptionRotator를 생성할 때
등을 바로 넣고 싶을 때
(예) Actor Spawn 시
같은 정보

WBP_OptionPanel의 TextPanelName을 스크롤박스에서 꺼내기

패딩 추가하기

새로 GraphicsOptions 추가하고 기존 것들 대체하기




