유니티 연동 #1

Eunho Bae·2022년 5월 11일
1

설명

  • 유니티에서는 백그라운드에서 유니티 게임오브젝트 접근하거나 하면 크래시가 나는 경우가 있다. 그래서 메인쓰레드에서만 접근하도록 한다.

  • ServerCore dll을 곧바로 유니티로 이식하면 디버깅하는데 어려움이 있다. 처음에는 코드를 수동으로 옮기도록 했다.

  • 유니티에서 Span, TryWriteBytes, slice와 같은 것들은 사용할 수 없어서 코드를 이전에 사용했던 것으로 약간 수정했다. PacketFormat을 수정하고 PacketGenerator 빌드를 한 후 배치파일을 다음과 같이 수정했다. 그러면 이제 유니티 프로젝트 내에 패킷을 정해준 포맷대로 만들 수 있다.

필요한 코드를 옮긴 후 NetworkManager.cs를 만들고 나서 DummyClient에서 처럼 Connector를 만들고 서버와 연결하는 모습을 볼 수 있다.
Session.cs에서 OnRecvCompleted가 호출되면
PacketSession::OnRecv() ->
ServerSession::OnRecvPacket() ->
PacketManager::OnRecvPacket() ->
PacketManager::MakePacket() ->
PacketHandler::S_ChatHandler()

에서 Debug.Log로 서버에서 전송받은 (DummyClient가 뿌려준) 메시지 중에 playerId가 1번이 뿌린 메시지만 출력해 주고있다.

profile
개인 공부 정리

0개의 댓글

관련 채용 정보