강의

멘토링

로드맵

Inflearn brand logo image

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

sunrise3225님의 프로필 이미지
sunrise3225

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진

몬스터 자동 생성

Knight 오브젝의 NavMeshAgent 문제

작성

·

81

0

image.png

선생님의 코드를 다 마치고 몬스터를 스폰하는 테스트를 하는 중에 위와 같은 오류가 떠서 이게 뭐지 하고 있는데

Knight 프리팹으로 가서

image.png

NavMeshAgent를 추가하고 테스트를 하니 정상적으로 몬스터가 스폰이 되어서 나왔습니다. 아마도 NavMeshAgent 를 사용한 이동 방식이 문제인거 같은데... 혹시 저와 같은 문제를 겪고 계신 분들은 이렇게 하면 해결이 되는구나.. 하고 조심스레 올려 봅니다.

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. sunrise3225님께서 경험하신 문제와 관련된 도움을 제공하겠습니다.

현재 보고하신 문제는 유니티의 MonoBehaviourNavMeshAgent 사용 방식과 관련이 있습니다. MonoBehaviournew 키워드로 생성할 수 없고, AddComponent<T>() 메소드를 통해 Unity 오브젝트에 추가해야 하는 특징이 있습니다. 또한, NavMeshAgent 컴포넌트가 없어 발생한 오류인데요, 이는 NavMeshAgent가 없으면 관련된 스크립트를 실행할 수 없기 때문입니다.

해결 방법은 다음과 같습니다:

  1. 컴포넌트는 AddComponent<T>()로 추가: MonoBehaviour, NavMeshAgent 등을 꼭 AddComponent<T>() 메소드를 이용해 할당해야 합니다. Knight 프리팹에 NavMeshAgent를 직접 추가한 것은 올바른 해결책이었습니다.

  2. 스크립트에서 컴포넌트 존재 확인: 스크립트에서 컴포넌트를 사용할 때 컴포넌트가 해당 오브젝트에 붙어 있는지 확인하는 로직을 추가하는 것도 좋습니다. 예를 들어, GetComponent<NavMeshAgent>() 메소드를 사용하여 반환 값이 null이 아닌지 체크하면, 해당 컴포넌트가 붙어 있는지를 알 수 있습니다.

비슷한 문제를 겪고 있는 다른 사용자들은 아래의 관련 유사질문 링크를 참고하시기 바랍니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

sunrise3225님의 프로필 이미지
sunrise3225

작성한 질문수

질문하기