언리얼엔진5 공부

[25.12.06 TIL] 언리얼 엔진 5 멀티플레이어 환경에서의 HUD 위젯 동기화 및 C++ 바인딩

Client Side 2025. 12. 23. 19:33

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로 바인딩 성공 여부를 체크하자.