• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

System.ArrayTypeMismatchException:

21.01.13 20:34 작성 조회수 228

0

Map.cs   ->   ApplyMove 및 ApplyLeave 함수 부분에서 오류가 간헐적으로 발생합니다.

public bool ApplyMove(GameObject gameObject, Vector2Int dest)

      {

         ApplyLeave(gameObject);

         PositionInfo posInfo = gameObject.PosInfo;

         if (CanGo(dest, true) == false)

            return false;

         {

            int x = dest.x - MinX;

            int y = MaxY - dest.y;

            _objects[y, x] = gameObject;     // 이 부분에서 오류 발생 함

         }

         // 실제 좌표 이동

         posInfo.PosX = dest.x;

         posInfo.PosY = dest.y;

         return true;

      }

System.ArrayTypeMismatchException: 'Attempted to access an element as a type incompatible with the array.'

이라는 오류가 발생합니다....

첨부파일에 있는 프로젝트 실행해도 마찬가지입니다

.NET Core 3.1 

Protobuf( 3.12.3)

Newtonsoft.Json (12.0.)

입니다

답변 1

답변을 작성해보세요.

0

안녕하세요,
제 환경에서는 발생하지 않고 있고,
해당 기반 프레임워크로 진행중인 프로젝트에서도 발생한 적이 없어서
말씀주신 단서로만은 찾기가 힘듭니다.

보내주신 에러를 보니 배열에 안 맞는 물체를 넣을 때 발생하는 오류인데
GameObject이 아닌 다른 객체를 넣을 때 발생하는 것으로 보이며,
Monster -> GameObject, Player -> GameObject, Arrow -> Projectile -> GameObject
을 상속받고 있는 것이 맞는지 확인 부탁 드립니다.

크래시가 일어나고 있는 이유는 명확하니 해당 부분에서 객체 타입을 살펴보면 될 것 같네요.