관리 메뉴

有希

C# 서버와 유니티 연동(完) 본문

프로그래밍/C# 게임서버

C# 서버와 유니티 연동(完)

有希. 2021. 9. 17. 21:33

추천 방안 : dll을 유니티에서 쓰게되면 편하게 구현해 놓은 기능들을 제한적으로 사용할 수 있지만, 디버깅을 할 수 없다는 문제점이 있다. 그래서 처음 합칠 때에는 웬만하면 코드를 긁어서 따로 만들어주고 디버깅을 하자.

1. 유니티에서는 Span을 인식하지 못한다. 지우고 BitConverter.ToInt 등을 적절히 활용해서 대체해줘야 한다. ArraySegment를 쓰면 될듯

2. TryWriteBytes 사용하지 못한다. byte[]를 생성해서 여기에 복사해주거나 unsafe코드를 이용해서 직접 포인터를 조정해야한다.

3. Async계열의 함수를 이용해서 비동기 함수를 실행할 때 유니티에서는 코드를 실행하는 메인 스레드가 아닌 다른 스레드에서 게임과 관련된 부분을 접근해서 실행하는 것을 원칙적으로 차단해놓았다.

그래서 유니티쪽 게임 스레드에서 비동기로 완료된 것들을 하나씩 꺼내어 처리하도록 만들어야 한다. -> monobehavior를 상속받은 녀석이 처리하도록 만들면 된다. 즉, monobehavior를 상속받은 녀석이 메인 스레드가 직접적으로 실행하는 녀석이다.

아무튼, cylinder로 player를 만들어주고, 랜덤하게 움직이게 한 뒤에 서버와 연동시켜서 서버에서 뿌려주는대로 player들을 움직이면 다음과 같이 마시멜로들이 왔다갔다 하는 것을 볼 수 있다.

'프로그래밍 > C# 게임서버' 카테고리의 다른 글

Job Queue  (0) 2021.09.17
Packet Generator  (0) 2021.09.17
Packet Serialization  (0) 2021.09.17
RecvBuffer  (0) 2021.09.17
Connector  (0) 2021.09.17