본문 바로가기
Unity/문제 해결

[Unity NetCode/ 문제 해결 완료] Build 실행 파일의 StartClient error

by 왹져박사 2024. 8. 30.

 

문제 상황 : 

Unity Editor에서 Play 정상 작동, Build Play Client 접속 문제
Host의 Address를 찾고 connect한 이후 
IsListening이 true로 남아있는 경우가 있어 StartClient 실패

1. 연결되지 않은 Client 종료를 하지 않는 경우 발생. 
2. NetworkManager의 ShutdownInternal()을 실행하지 않음. 
3. IsListening이 true로 다음 IP로 넘어가 StartClient 실행
4. 실제 Host IP에 접근하면 Client의 Instance가 이미 존재하여 StartClient 실패



문제 상황 분석 : 

Login의 FindHost()의 반복문은 프레임 차이의 속도를 제어하는
Time.deltaTime을 기준으로 진행됨. 
하지만 Coroutine의 반복 종료는 
yield return new WaitForEndOfFrame()로 진행됨. 


-실제 UI 출력 또한 2,3...4,5...6,7...과 같이 렌더링 되어 프레임 문제라고 추측-


해결 방법 : 

Frame이 기준이 아닌 Client 접속을 완전히 해제 완료를 알리는
IsListening을 기준으로 하여 
yield return new WaitUntil(() => NetworkManager.Singleton.IsListening == false);로 수정하여 문제 해결.