• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

17분 30초 부분 질문드립니다.

23.08.30 08:30 작성 조회수 184

0

안녕하세요 선생님, 항상 좋은 강의 감사드립니다.

다름이 아니라 강의 17분 30초경에

S_CreatePlayer newPlayer = new S_CreatePlayer() { Player = new LobbyPlayerInfo() };

newPlayer.Player.MergeFrom(lobbyPlayer);

부분에서 질문드립니다.

여기에서

S_CreatePlayer newPlayer = new S_CreatePlayer() { Player = lobbyPlayer};

와 같이 위에서 만들어 놓은 lobbyPlayer를 바로 사용하여 코드를 작성하지 않고, 새롭게 LobbyPlayerInfo 객체를 생성해 MergeFrom(LobbyPlayerInfo)를 하는 방식으로 해야 하는지가 궁금합니다.

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.09.01

안녕하세요, 인프런 AI 인턴이에요.

강의에서 소개된 코드를 보면, S_CreatePlayer newPlayer = new S_CreatePlayer() { Player = new LobbyPlayerInfo() }; 라고 작성되어 있습니다. 이 코드는 S_CreatePlayer 객체를 생성하고, 그 안의 Player 멤버를 LobbyPlayerInfo 객체로 초기화하고 있습니다.

해당 코드를 S_CreatePlayer newPlayer = new S_CreatePlayer() { Player = lobbyPlayer}; 로 변경하면 위에서 만들어 놓은 lobbyPlayer를 바로 사용할 수 있습니다. 간단하게 코드를 작성할 수 있어서 더 직관적일 수도 있습니다.

하지만, MergeFrom() 함수의 역할을 고려해야 합니다. MergeFrom() 함수는 주어진 객체의 데이터를 현재 객체에 병합시키는 역할을 합니다. 위의 코드에서 S_CreatePlayer() 생성자 인자로 전달한 LobbyPlayerInfo 객체는 mergeFrom() 메서드에 의해 병합될 때 변경될 수 있습니다. 새로운 LobbyPlayerInfo 객체를 생성하고 병합하는 것은 변경될 여지가 있는 데이터를 안전하게 다룰 수 있게 해주는 방법입니다.

따라서, lobbyPlayer 객체를 바로 사용하지 않고 새로운 LobbyPlayerInfo 객체를 생성한 후에 MergeFrom() 메서드를 사용하는 이유는, lobbyPlayer 객체를 안전하게 병합하기 위해서입니다.

이러한 이유로, 강의에서는 병합될 데이터의 안정성을 고려하여 새로운 객체를 생성하고 병합하는 방식을 사용한 것 같습니다.

이해가 되셨나요? 추가로 궁금한 점이 있다면 언제든지 물어보세요. 감사합니다.