사용자가 무엇을 필요로 하는지 파악하고 내비게이션 설정을 안내합니다. 확장된 컴포넌트 설명, API 노트, 코드 레시피 및 문제 해결은 navigation-system.md를 참조하세요.
C#을 eval에 전달하기
eval은 파일이 아니라 명령문 블록을 컴파일합니다. 이로 인해 두 가지 결과가 발생하며, 둘 다 경고 대신 컴파일 오류를 일으킵니다.
using지시문 사용 불가. 컴파일러는using UnityEngine;을 리소스 해제 문으로 읽고 이를 거부합니다(CS0210).- 형식은 반드시 전체 이름(fully qualified)으로 지정해야 합니다.
AssetDatabase또는Volume과 같은 단독 이름은 확인되지 않으며(CS0246/CS0103), 단독Object는object와 모호합니다(CS0104).
아래 코드 조각이 using 문을 포함하거나 가독성을 위해, 또는 프로젝트에 저장될 목적으로 파일 형태로 작성된 경우, eval에 전달하기 전에 형식을 전체 이름으로 한정하세요.
라우팅 로직
| 사용자 발화 | 해석 |
|---|---|
| "내비게이션 추가" / "nav 설정" | 전체 설정: NavMeshSurface + 베이크 + NavMeshAgent |
| "이 캐릭터를 이동하게 해줘" | NavMeshAgent 추가, NavMesh 존재 확인 |
| "경로 찾기 추가" | NavMeshAgent + 이동 스크립트 |
| "에이전트가 움직이지 않아요" / "경로를 찾을 수 없음" | 문제 해결 — 참조 문서의 문제 해결 의사 결정 트리 참조 |
| "장애물 피하기" | 조각(carving) 또는 회피 기능이 있는 NavMeshObstacle |
| "두 영역 연결" / "점프해서 건너기" | 영역 사이에 NavMeshLink |
| "포인트 사이를 순찰" | NavMeshAgent + 순찰 스크립트 |
| "클릭하여 이동" | NavMeshAgent + 레이캐스트 클릭-이동 스크립트 |
| "이동 중 캐릭터 애니메이션" | Animator와 NavMeshAgent 연결 |
| "다양한 에이전트 크기" | 내비게이션 창에서 에이전트 유형 구성 |
| "영역 및 비용" / "영역 제한" | NavMesh 영역 유형, 수정자 및 에이전트 영역 마스크 |
워크플로우
0. 패키지 설치 확인
다른 작업을 수행하기 전에 com.unity.ai.navigation이 설치되어 있는지 확인하세요. 누락된 경우 Packages/manifest.json의 dependencies에 추가하세요. Unity는 편집기가 다시 포커스를 얻을 때 이를 해결하며, 편집기 연결이 필요하지 않습니다.
"com.unity.ai.navigation": "<현재 2.x 버전>"
버전 문자열을 임의로 만들지 마세요. 현재 버전은 Unity 레지스트리(https://packages.unity.com/com.unity.ai.navigation에서 모든 게시된 버전을 나열함)에서 읽거나, 이 manifest에서 인접한 Unity 패키지가 이미 사용하고 있는 버전을 복사하세요. 존재하지 않는 버전은 Unity가 조용히 해결에 실패하게 만들므로, 잘못된 추측은 아무 일도 일어나지 않은 것처럼 보입니다.
설치가 확인된 경우에만 진행하세요. C#을 실행할 수 있는 라이브 편집기가 있다면 Client.Add에 해당하는 내용은 navigation-system.md를 참조하세요.
1. 사전 점검: 현재 내비게이션 설정 평가
변경을 가하기 전에 이미 무엇이 있는지 검사하세요:
- 기존 내비게이션 컴포넌트를 찾습니다. 편집기가 연결된 상태라면 라이브 씬에서
NavMeshSurface,NavMeshAgent,NavMeshObstacle,NavMeshLink및NavMeshModifier를 쿼리하세요. 실행 중인 편집기를 제어하려면unity-cli스킬을 참조하세요. 편집기 연결이 없다면 씬 및 프리팹 파일에서 해당 컴포넌트 이름을 검색하세요. - Window > AI > Navigation > Agents 탭을 통해 구성된 에이전트 유형을 확인하세요.
- 변경 사항을 제안하기 전에 발견된 모든 내비게이션 컴포넌트를 요약하세요.
2. 누락된 정보 수집
컴포넌트를 생성하기 전에 사용자가 다음을 지정했는지 확인하세요: 걸어 다닐 수 있는 표면, 에이전트 유형/크기, 에이전트 동작, 장애물, 링크 및 영역/비용 요구 사항. 불명확한 점이 있으면 질문하세요. 전체 내용은 참조 문서의 정보 수집 체크리스트를 참조하세요.
3. 계획 및 실행
다음 일반적인 순서를 따르세요. 각 컴포넌트에 대한 자세한 단계별 지침은 참조 문서의 컴포넌트 설정 가이드를 참조하세요.
- NavMesh Surface — 걸어 다닐 수 있는 메시 생성 (베이크)
- NavMesh Agent — 경로 찾기 캐릭터 추가
- NavMesh Obstacle — 동적 장애물 추가
- NavMesh Link — 분리된 NavMesh 영역 연결
- NavMesh Modifier / Modifier Volume — 영역 유형 미세 조정
- 스크립트 — 이동, 순찰, 클릭-이동, 애니메이션 연결 (참조 문서의 일반 레시피 참조)
4. 검증
설정 후 다음을 확인하세요:
- NavMesh가 베이크되어 보이는지 (파란색 오버레이)
- NavMeshSurface의 에이전트 유형이 NavMeshAgent의 에이전트 유형과 일치하는지
- 에이전트가 목적지까지 유효한 경로를 가지고 있는지
- 장애물이 올바르게 조각(carve)되거나 방해하는지
- 링크의 양쪽 끝이 연결되어 있고 Activated가 활성화되어 있는지
- 영역 마스크가 의도된 이동을 허용하는지
- 충돌하는 컴포넌트가 없는지 (참조 문서의 컴포넌트 혼합 가이드 참조)
- Rigidbody를 NavMeshAgent와 함께 사용하는 경우 Is Kinematic이 활성화되어 있는지
5. 최종 확인
생성되거나 변경된 사항을 요약하세요:
- NavMesh Surface: 해당 GameObject, 에이전트 유형, 지오메트리 모드, 베이크 상태
- NavMesh Agent: 해당 GameObject, 속도, 정지 거리, 영역 마스크
- NavMesh Obstacle: 해당 GameObject, 모양, 조각 켜기/끄기
- NavMesh Link: 시작/끝, 양방향, 영역 유형
- 스크립트: 어떤 GameObject에 어떤 스크립트가 첨부되었는지
- 수동으로 수행해야 하는 단계 (웨이포인트 조정, 씬 변경 후 재베이크 등)