• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

19:00 쯤 Player를 찾고 로그를 남기는 테스트에서

21.01.05 22:39 작성 조회수 165

0

19:00 쯤 Player를 찾고 로그를 남기는 테스트에서

chatPacket.chat를 로그로 남긴 후에

GameObject를 Find할 때 메인 쓰레드에서 사용하라는 예외가 발생합니다.

혹시 제가 잘못 작업했나 해서 올려두신 자료를 받아서 해보아도 똑같이 try catch에서 넘어가질 못하네요

유니티 버전 2021.1.0b1에서 안되서

2019.4.17f1까지 낮춰봤는데도 안됩니다.

무언가를 빠트린거 같은데 찾기가 힘드네요

혹시 조언좀 해주실 수 있을까요 

답변 3

·

답변을 작성해보세요.

1

정신없이 보느라 엉뚱한 곳만 쳐다보고 있었던것 같네요..

이런 기본적인 실수를.. ㅜㅜ

막혔을 때 바로 물어볼 수 있는 분이 계신게 얼마나 큰 행운인지 또 한번 느낍니다! ㅎㅎ

늦은 시간에 친절하게 답변 달아주셔서 정말 감사합니다!

1

유니티 쪽에선 패킷을 받으면 바로 실행하는게 아니라,
onRecvCallback을 이용해서 호출하도록 되어 있습니다.
보내주신 코드를  보니 null 체크를 거꾸로 하셔서
받자마자 Sub 쓰레드에서 바로 게임 로직을 실행해서 발생한 문제입니다.

onRecvCallback != null로 바꿔주시면 해결될 것으로 보이네요.

0

네트워크 처리를 하는 Sub 쓰레드에서
유니티 게임 컨텐츠를 사용하면 그렇게 됩니다.
강의에서는 네트워크 패킷을 받더라도
바로 처리하지 않고 메인 쓰레드에서 처리하도록 패킷큐에만 넣어놓고,
추후 메인 쓰레드에서 처리를 합니다.
어떤 부분을 다르게 하신 것인지는 내용만 봐서는 알기 힘듭니다.

더 찾아보시다가 못 찾으시겠으면
rookiss@naver.com으로 통으로 압축 파일을 보내주시면 살펴보겠습니다!