1. 핵심 개념: Native BindWidget
- UPROPERTY(meta = (BindWidget))을 사용하면 블루프린트에서 만든 위젯의 이름과 C++ 변수명을 일치시켜 자동으로 포인터를 연결할 수 있다.
- 이는 블루프린트의 무거운 로직을 C++로 옮겨 성능을 최적화하고, UI 변수 관리의 실수를 줄여준다.
2. 멀티플레이어 UI 개발의 난제: 복제 시점(Replication Timing)
- 네트워크 환경에서 BeginPlay 시점에는 아직 상대방의 PlayerState나 속성(Attribute)이 클라이언트에 도착하지 않았을 수 있다.
- 해결책: 데이터가 들어올 때까지 기다리는 폴링(Polling) 로직이나 타이머를 사용해야 하며, 데이터 확인 후에는 반드시 AddUniqueDynamic으로 델리게이트를 중복 없이 연결해야 한다.
3. 실무형 UI 아키텍처
- C++ (Native): 데이터 감시, 수치 계산, SetPercent 등 핵심 로직 담당.
- Blueprint: 애니메이션 재생, 파티클 효과 등 시각적 연출 담당.
- 이처럼 역할을 분리함으로써 유지보수성과 성능을 동시에 잡을 수 있음을 배웠다.
4. 배운 점
- "로그에 찍히지 않는 코드는 실행되지 않은 것이다." 위젯이 화면에 보인다고 해서 내부 로직이 돌고 있다고 자만하지 말고, 반드시 UE_LOG로 바인딩 성공 여부를 체크하자.
'언리얼엔진5 공부' 카테고리의 다른 글
| [TIL] 언리얼 엔진 5 UI 설계 - 상속 vs 인터페이스 (0) | 2025.12.26 |
|---|---|
| TIL: Unreal Engine 5 멀티플레이 킬 로그 시스템 구현 (0) | 2025.12.24 |
| 데미지 플로팅 (Damage Floating) 구현 (0) | 2025.12.22 |
| 리팩터링 (Refactoring) (0) | 2025.12.19 |
| 2025-12-18 TIL: 멀티플레이어 게임 UI 시스템 및 리스폰 로직 구현 (0) | 2025.12.18 |