작성
·
88
·
수정됨
0
클라이언트에서는 빙의를 하면서 오너쉽을 설정하는 것이 아니라 Owner값이 서버와 동기화 되는 것이라고 이해했습니다.
그리고 서버에서 Owner값이 바뀌면 클라이언트의 OnRep_Owner가 실행되면서 클라이언트의 Owner값이 설정된다고 이해했습니다.
그래서 Super의 OnRep_Owner가 실행되기전에도 로그를 찍어봤는데, 그때도 이미 오너가 설정된것으로 로그가 출력되었고, 코드를 확인해보니 Actor의 OnRep_Owner는 내용이 없더라구요..? 그러면 정확히는 OnRep_Owner에서 Owner값이 동기화 되는것은 아니라는 건가요?
그리고 아래 로그와 같이 PostNetInit가 실행되고 BeginPlay 까지 실행된 이후에 PostNetInit가 한번 더 호출되는 이유는 무엇인지 궁금합니다.
LogABNetwork: [CLIENT1] AABCharacterPlayer::OnRep_Owner [ABCharacterPlayer_0 Begin]
LogABNetwork: [CLIENT1] AABCharacterPlayer::OnRep_Owner [Owner: BP_ABPlayerController_C_0]
LogABNetwork: [CLIENT1] AABCharacterPlayer::OnRep_Owner [Owner: BP_ABPlayerController_C_0]
LogABNetwork: [CLIENT1] AABCharacterPlayer::OnRep_Owner [End]
LogABNetwork: [CLIENT1] AABCharacterPlayer::PostNetInit [Begin]
LogABNetwork: [CLIENT1] AABCharacterPlayer::PostNetInit [End]
LogABNetwork: [CLIENT1] AABGameState::OnRep_ReplicatedHasBegunPlay [Begin]
LogABNetwork: [CLIENT1] AABPlayerController::BeginPlay [Begin]
LogABNetwork: [CLIENT1] AABPlayerController::BeginPlay [End]
LogABNetwork: [CLIENT1] AABGameState::OnRep_ReplicatedHasBegunPlay [End]
LogABNetwork: [CLIENT1] AABCharacterPlayer::PostNetInit [Begin]
LogABNetwork: [CLIENT1] AABCharacterPlayer::PostNetInit [End]
답변 3
0
0
0
안녕하세요, 인프런 AI 인턴입니다. dhqks6님.
언리얼 엔진에서 클라이언트의 오너십 설정과 관련된 몇 가지 중요 포인트를 설명드리겠습니다.
Owner값의 동기화:
OnRep_Owner
함수는 Owner값 변경 시 호출될 콜백 함수이며, 클라이언트의 데이터 로직을 업데이트할 기회를 제공합니다. 이에 따라 OnRep_Owner가 실행되기 전에 이미 클라이언트의 Owner값은 업데이트된 상태일 수 있습니다.Actor의 OnRep_Owner 내용:
Actor
클래스의 OnRep_Owner
에는 추가적인 코드가 없지만, 상속받은 클래스에서 이를 오버라이드하고 필요한 동작을 정의할 수 있습니다. 따라서, 클라이언트에서 Owner 업데이트가 일어난 후 이 함수에서 추가적인 처리를 할 수 있습니다.PostNetInit 호출:
PostNetInit
함수는 네트워크에서 객체가 초기화된 후 호출됩니다. 클라이언트에서 PostNetInit
함수가 두 번 호출되는 이유는 네트워크 상태 및 데이터를 보장하기 위함일 수 있습니다. 로그를 통해 실제 특정 컨텍스트에서 어떻게 이러한 순서가 발생하는지를 보는 것이 중요합니다.관련된 질문과 답변을 통해 더 깊이 이해하실 수 있도록 관련 링크를 추천드립니다:
이 링크들은 Owner 속성의 동기화와 PostNetInit 호출 과정의 로그 분석에 대한 이해를 돕는 데 유용한 정보를 제공할 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.