이 페이지는 예를 들어 에디터 스크립트에서 플레이 모드 외부에서 경로 탐색을 작동시키는 방법을 설명합니다.
에디터 모드에서의 경로 탐색, 즉 Unity 에디터에서 게임이 전혀 실행되지 않을 때의 경로 탐색은 플레이 모드와 동일한 방식으로 작동합니다. 주요 차이점은 경로 요청이 동기적이라는 점입니다. 즉, 즉시 계산됩니다. 일반적으로 경로 요청은 비동기적으로 수행되며 계산하는 데 여러 프레임이 걸릴 수 있습니다.
이를 작동시키려면 먼저 경로 탐색 시스템을 초기화해야 합니다. 에디터 모드에서는 그래프가 역직렬화되지 않았을 수 있으며, 그래프가 스캔되지 않았을 수 있기 때문입니다. AstarPath.FindAstarPath 메서드는 AstarPath.active 속성이 설정되었는지, 모든 그래프가 역직렬화되었는지 확인합니다(내부적으로 바이트 배열로 저장됩니다).
// AstarPath 객체가 로드되었는지 확인하세요.
AstarPath.FindAstarPath();
AstarPath.active.Scan();
그래프가 스캔되었을 가능성이 있지만 확실하지 않은 경우(예를 들어 특정 에디터 스크립트를 여러 번 실행할 수 있음), 먼저 확인할 수 있습니다.
// 씬의 첫 번째 그리드 그래프가 스캔되었는지 확인하고, 그렇지 않으면 즉시 스캔하세요.
if (!AstarPath.active.data.gridGraph.isScanned) AstarPath.active.Scan();
이후에는 평소와 같이 경로를 요청할 수 있습니다. 아래 예제는 AstarPath 컴포넌트를 직접 사용하지만, Seeker 컴포넌트를 사용하는 것도 마찬가지로 잘 작동할 것입니다.
ABPath path = ABPath.Construct(transform.position, target.position);
AstarPath.StartPath(path);
// 모든 것이 동기적으로 처리되므로 경로가 지금 계산됩니다.
Debug.Log("Found a path with " + path.vectorPath.Count + " points. The error log says: " + path.errorLog);
// 씬 뷰에 경로를 그립니다.
for (int i = 0; i < path.vectorPath.Count - 1; i++) {
Debug.DrawLine(path.vectorPath[i], path.vectorPath[i+1], Color.red);
}
Searching for paths 참조 |
'유니티 에셋 > A* Pathfinding project pro' 카테고리의 다른 글
Graph Types (0) | 2024.05.26 |
---|---|
Graph Generation (0) | 2024.05.26 |
Manual Player Movement (0) | 2024.05.26 |
Circling a target (0) | 2024.05.26 |
Utilities for turn-based games (0) | 2024.05.25 |