인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

허지웅님의 프로필 이미지
허지웅

작성한 질문수

[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스

클라이언트 에러 및 버그들

해결된 질문

작성

·

50

0

안녕하세요! 강의를 보며 멀티플레이 게임 제작을 공부 중인 학생입니다.

현재까지 나온 강의를 모두 듣고 클론 코딩을 하였는데 종종 클라이언트에서 에러가 발생합니다.

깃허브 코드와 강의를 다시 봐도 해결이 힘들어 질문을 작성하게 되었습니다.

 

  1. client 화면에서 hero 들이 모두 화면 중앙에 배치되는 현상

    image.png
  • host는 문제 없이 host와 client영역으로 나뉘어져 있습니다.

  • 이 경우

    • client에서 host보다 먼저 herospawn을 하면 null에러가 뜹니다.

      • NullReferenceException: Object reference not set to an instance of an object

        Spawner.HeroSpawn (System.UInt64 clientId, System.String rarity)

      • Spawner 스크립트의 HeroSpawn(ulong clientId, string rarity) 함수의 var existingHolder = GetExistingHolder(temp, data.Name); 이 부분이 문제라고 뜹니다.

    • host에서 herospawn을 먼저 하고 client에서 herospawn을 하면 null 에러 없이 랜덤하게 두 가지 경우가 나옵니다..

      • 위 사진처럼 client 화면의 중앙에 모든 hero가 배치되는 경우

      • host, client모두 정상적으로 배치되는 경우

      • 그러나 위 두 가지 경우 모두 client는 host가 마지막으로 생성한 영웅만 생성됩니다.

        • ex) host가 warrior 소환 시 client는 warrior 만 소환, host가 summon 버튼을 눌러 archer 소환 시, client는 그 후로 archer만 소환

  1. client 에서 영웅 클릭 시, NullReferenceException 발생

CameraRay 스크립트의MouseButtonDown() 함수의 else if (value == 1) Canget = holder.Holder_Part_Name.Contains("CLIENT"); 부분에서 발생합니다.

 

위 두 문제의 해결법을 알고 싶습니다 ㅠㅠ


게임을 실행하며 찾은 버그들 입니다.

  1. 내 진영에서 상대 진영으로 hero 이동 가능

  2. hero 없는 빈 홀더 클릭 및 이동 가능 (ui도 뜸)

    1. 빈 홀더 클릭 후, sell 버튼 클릭 시 Sell() 함수 내의 UI_Main.instance.GetNavigation 부분 인덱스 범위 에러 발생

  3. 몬스터 클릭 시 CameraRay 스크립트 MouseButtonDown()가 호출되어 heroholder가 null이 되어 에러 발생

     

버그들은 각 관련된 처리를 하지 않아 발생한 것 같지만, 위의 클라이언트 문제는 해결법을 모르겠습니다

답변 1

0

Pinous님의 프로필 이미지
Pinous
지식공유자

안녕하세요, 말씀하신 내용들에 대한 강의 부분이 혹시 어딘지 알 수 있을까요?
현재 말씀하신 내용들은 제가 다시 테스트 해 본 결과 문제가 없는걸로 보입니다.

아마 코드 작업이 일부분 다른 것 같은데요,
오류가 나오는 프로젝트를 보내주신다면 확인하여 수정 도움 드릴 수 있도록 하겠습니다 ㅎㅎ

pinous.g@gmail.com

으로 프로젝트를 보내주신다면 빠른 파악이 가능 할 것 같습니다!

허지웅님의 프로필 이미지
허지웅

작성한 질문수

질문하기