AMapper 데이터 로드
지원 환경
- AMapper v1.5.1-7 이상
ARPlayground 연결
AMapper 프로젝트를 생성하면 다음과 같이 *.amproj 파일과 각종 디렉토리들이 생성 됩니다. 이렇게 생성된 전체 프로젝트 파일을 통해 ARSDK를 동작시킬 수 있습니다.

StreamingAssets 경로 활용
AMapper 프로젝트 디렉토리를 수정하지 않고 그대로 Unity 프로젝트의 StreamingAssets 디렉토리의 하위에 추가를 해줍니다.

StreamingAssets 디렉토리는 런타임에 경로 기반으로 접근할 수 있는 파일들을 저장하는 디렉토리입니다. 기본적으로 생성되어 있지 않기 때문에 사용자가 Unity 프로젝트 내의 Assets 폴더 하위에 직접 생성을 해야합니다.
추가 된 AMapper 프로젝트 파일의 경로를 ARPlayGround 컴포넌트에서 설정해줍니다. Contants Path 필드에 StreamingAssets의 하위 경로를 작성합니다.

이와 같은 방법을 통해 AMapper의 데이터를 ARSDK에서 읽을 수 있습니다.
PersistentDataPath 활용
ARPlayGround에서 Streaming Asset에 체크를 하면 Application.streamingAssets 하위의 Contents Path를 사용하고, 체크를 해제하면 Application.persistentDataPath 하위의 경로를 사용하게 됩니다.
StreamingAssets 경로를 이용하면 앱 빌드 시 컨텐츠가 함께 빌드 되어 빠르고 쉽게 컨텐츠에 접근할 수 있습니다. 하지만 모든 컨텐츠가 앱에 포함되어 빌드가 되기 때문에 앱의 용량이 커진다는 단점이 있습니다. 이 문제는 별도의 컨텐츠 서버를 구축한 뒤 해당 서버를 통해 컨텐츠를 다운로드 받아 AMapper 프로젝트에 접근하는 방법을 사용하면 해결할 수 있습니다. 다운로드 받은 컨텐츠 파일은 Application.persistentDataPath을 기준으로 저장되기 때문에 ARPlayground에서 Streaming Asset에 체크를 해제하면 해당 경로에 접근이 가능합니다.
AMapper 프로젝트 로드
ARPlayGround 컴포넌트를 보면 Load On Awake라는 필드가 있는 것을 볼 수 있습니다. 해당 필드에 체크가 되어 있으면 시작과 동시에 Contents Path에 지정된 경로의 amproj 파일을 읽어서 화면을 구성합니다.
만일 앱을 실행한 뒤 원하는 순간에 amproj 로드를 직접 호출해야 합니다. ARSDK는 로딩 완료 콜백 호출과 비동기 로딩을 모두 지원합니다. 필요에 따라 둘 중 한가지 방법을 선택해서 AMapper 프로젝트를 로드할 수 있습니다.
// 로딩 완료 콜백 호출
m_ARPlayGround.Load(() => {
Debug.Log("AMapper 프로젝트 파일 로드 성공");
});
// async를 이용한 로딩
await m_ARPlayGround.LoadAsync();
모든 ARSDK의 기능들은 AMapper 프로젝트가 정상적으로 로드가 된 뒤에 실행해야 합니다.
주어진 경로에서 *.amproj 파일을 찾을 수 없다면 아래와 같은 경고 메시지를 확인할 수 있습니다. 이 경우 AMapper 프로젝트 파일이 정상적인 위치에 있는지, 혹은 Contents Path에 정확한 경로를 입력했는지 확인이 필요합니다.
