
최종 선택// DCGameOverWidget.h
UPROPERTY(meta=(BindWidget))
UScrollBox* RankingScrollBox;
// DCGameOverWidget.cpp
#include "Components/ScrollBox.h"
#include "Components/TextBlock.h"
#include "Blueprint/WidgetTree.h"
// 복잡한 동적 생성 방식
for (int32 i = 0; i < Results.Num(); ++i) {
UTextBlock* RowText = WidgetTree->ConstructWidget<UTextBlock>(...);
// 폰트 설정이 매우 복잡
FSlateFontInfo FontInfo = RowText->GetFont();
FontInfo.Size = 24;
RowText->SetFont(FontInfo);
RowText->SetColorAndOpacity(FSlateColor(FLinearColor::Red));
// 한글 포함 텍스트 (폰트 문제 발생)
RowText->SetText(FText::FromString(
FString::Printf(TEXT("%d위 : %s"), DisplayRank, *R.Nickname)
));
RankingScrollBox->AddChild(RowText);
}
// DCGameOverWidget.h
UPROPERTY(meta=(BindWidget))
class UMultiLineEditableTextBox* RankingTextBox;
// DCGameOverWidget.cpp
#include "Components/MultiLineEditableTextBox.h"
// 단순하고 효율적인 문자열 조합 방식
FString RankingText;
for (int32 i = 0; i < Results.Num(); ++i) {
const FPlayerResult& R = Results[i];
// 한글 제거로 폰트 문제 해결
RankingText += FString::Printf(TEXT("%s\n"), *R.Nickname);
}
RankingTextBox->SetText(FText::FromString(RankingText));
RankingTextBox->SetIsReadOnly(true); // 읽기 전용 설정
'UEditableTextBox' : undeclared identifier// ❌ 잘못된 코드
FString RankingText; // 첫 번째 선언
// ... 중간 코드들 ...
FString RankingText; // 두 번째 선언 (에러!)
// ✅ 올바른 코드
FString RankingText; // 한 번만 선언

해결 완료 ~
디자인도 수정하기..
| 구분 | 기존 방식 (ScrollBox) | 변경된 방식 (MultiLineEditableTextBox) |
|---|---|---|
| 위젯 구조 | ScrollBox + 다수의 TextBlock | 단일 MultiLineEditableTextBox |
| 구현 복잡도 | 복잡 (동적 위젯 생성) | 단순 (문자열 조합) |
| 폰트 설정 | 코드에서 복잡하게 설정 | BP에서 직관적으로 설정 |
| 텍스트 형식 | "1위 : 닉네임" (한글 포함) | "닉네임" (영어만) |
| 헤더 include | ScrollBox.h, TextBlock.h, WidgetTree.h | MultiLineEditableTextBox.h |
| 성능 | 동적 생성으로 오버헤드 | 정적 텍스트로 최적화 |
| 유지보수 | 복잡한 코드 구조 | 간단하고 명확한 구조 |
❌ Editable Text (Multi-Line) → 컴파일 에러
✅ Text Box (Multi-Line) → 정상 작동
// ❌ 잘못된 패턴
FString RankingText;
// ... 코드 ...
FString RankingText; // 재정의 에러!
// ✅ 올바른 패턴
FString RankingText; // 한 번만 선언
// ... 모든 작업 ...
// ❌ 잘못된 전방선언
class UEditableTextBox;
// ✅ 올바른 전방선언
class UMultiLineEditableTextBox;
❌ rankingtextbox, RankingTextbox, Ranking_TextBox
✅ RankingTextBox (정확한 대소문자 구분)