해결된 질문
24.06.27 14:15 작성
·
109
·
수정됨
0
궁금한것이 생겨서 아무 의미 없는 액터에 WidgetComponent를 붙인 다음, WidgetComponent의 GetWidget()이 가지고 있는 OwingPlayer 와 OwningPlayerPawn가 무엇인지 확인해봤더니 nullptr 이 나올 것으로 예상한 것과는 다르게
실험한 액터와 상관없는, 월드에 있는 PlayerController_0 와 그 빙의된 캐릭터인 Character_0가 반환되는 것을 확인했습니다.
WidgetComponent를 어떤 액터가 가지고 있던 간에 항상 같은 PlayerController_0와 Character_0가 반환되는 것 같은데요.
제 실험 방식이 원래 말도 안되는 것인지, 아니면 원래 WidgetComponent가 만드는 UserWidget 은 무조건 해당 월드의 LocalPlayer와 그것에 빙의된 Pawn이 고정으로 정해진 것인지가 궁금합니다.
답변 1
0
2024. 06. 29. 08:16
네 모든 위젯의 부모 클래스인 UserWidget 클래스는 초기화단계에서 항상 로컬 플레이어 정보를 보관하고 GetOwningPlayer 함수 호출시 이를 반환해줍니다. 이는 액터 간의 소유 관계와는 별도로 구축된 정보입니다.
네트웍 멀티 플레이어 관점에서 UI는 서버와 동기화되지 않고 Proxy 클라이언트의 정보를 보여주는 독립적인 소유물이기 때문에 이렇게 설계되었다고 생각합니다.