ConstructorHelpers, EditDefaultsOnly, SoftClassReference 중 로딩 방식과 조정 권한에 맞게 고릅니다.
CreateWidget 소유·정리
위젯을 화면에 띄우는 코드는 짧지만 클래스 참조, 소유 플레이어, 저장된 인스턴스, 제거 시점을 놓치면 UI가 쉽게 중복됩니다.
TSubclassOf로 Widget Blueprint 클래스를 받고 CreateWidget에 OwningPlayer를 넘긴 뒤, 만든 인스턴스는 UPROPERTY로 보관합니다.
PlayerController나 LocalPlayer를 소유자로 넘기면 입력, 포커스, 네트워크 화면 구분이 명확해집니다.
ZOrder와 표시 조건을 정해 메뉴, HUD, 팝업이 서로 덮는 순서를 관리합니다.
재사용할 위젯은 숨기고, 끝난 위젯은 RemoveFromParent와 참조 해제로 정리합니다.
- IsValid로 중복 생성 방지
- OwningPlayer 일치
- 닫을 때 참조 해제