inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)

Player 연동 #2

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

320

김정현

작성한 질문수 4

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)를 하는 방식으로 해야 하는지가 궁금합니다.

MMORPG

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 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 객체를 안전하게 병합하기 위해서입니다.

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

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

리니지 클래식 ECS

0

34

1

질문 있습니다.

0

45

2

심리스 존 방식 난이도

0

94

2

RewardPlayer함수 에 대해서

0

57

1

모바일 데이터 환경에서의 렉 현상 문의 드립니다.

0

89

2

화살 처리 관련 질문이 있습니다!

0

116

1

part1~9 모두 완료하였습니다.

0

210

2

이번 수업 특히 좋았습니다

0

151

1

화살과 몬스터 버그와 관련한 질문입니다

0

169

3

DummyClient cpu스펙 질문있습니다.

0

121

2

InventoryManager 클래스에서 사소하지만 꼭 알고 싶은 사항이 있습니다

0

111

2

FANTASTIC UI STARTER PACK이 없네요..

0

120

1

면접 질문 드립니다.

0

148

1

로그인 정보 암호화는 어떻게 하나요?

0

232

2

조건식 중단점을 걸면 문제가 발생합니다

0

134

0

GenProto.bat 파일 오류

0

171

2

코드변경을 하면 오류가 생기는데요

0

188

2

아이템 슬롯 선적용에 대한 질문입니다

0

194

1

M1 M2강의의 경우 어느정도 수준이 필요한가요?

0

308

1

3~4일 간격으로 CPU 99% 사용되는 문제

0

421

2

JobSerializer 관련

0

290

1

3D 게임 이동 동기화

0

468

2

GameLogic 쓰레드에서 모든 GameRoom을 처리하나요?

0

258

1

Async와 Job방식의 차이가 궁금합니다.

0

298

1