공간 좌표계 유지
일반적으로 World Locking Tools 지속성 기능의 이점은 구현 세부 정보보다 더 흥미롭습니다.
따라서 이 문서는 World Locking Tools 지속성이 지원하는 환경에 대한 설명으로 시작합니다. 그 후 World Locking Tools 상태 지속성을 관리하는 방법을 살펴보겠습니다. 마지막으로 어떤 데이터가 저장되고 로드되는지 간단하게 설명하겠습니다.
세션 간 World Locking Tools
다른 곳에서 정의한 대로, Frozen State는 현재 월드 고정된 안정적인 공간을 다시 시작하는 데 필요한 모든 데이터입니다.
World Locking Tools 지속성의 주요 효용은 예비 세션의 작업 이점을 허용하고, 영역을 스캔하고, 가상 공간을 실제 세계에 맞춰 후속 세션에서 사용할 수 있도록 하는 것입니다.
이 상태를 복원하면 후속 세션에서 지루하거나 시간이 많이 걸리는 설정을 포기하고 초점 환경으로 바로 돌아갈 수 있습니다.
World Locking Tools 상태 저장
로드하려면 먼저 Frozen State를 저장해야 합니다.
Frozen State를 저장하는 가장 간단한 방법은 World Locking Tools 컨텍스트에서 Unity 검사기를 통해 또는 런타임에 스크립트를 통해 World Locking Tools Manager에서 자동 저장을 사용하도록 설정하는 것입니다.
스크립트를 통해 World Locking Tools Manager 상태를 설정하는 방법은 먼저 상태를 가져와서 원하는 대로 변경한 다음, 상태를 다시 블록으로 설정하는 방식으로 수행됩니다. 예를 들어 자동 저장 기능을 전환하려면 다음을 수행합니다.
var settings = WorldLockingManger.GetInstance().Settings;
settings.AutoSave = !settings.AutoSave;
WorldLockingManager.GetInstance().Settings = settings;
세션 중에 자동 저장 기능이 사용에서 사용 안 함으로 전환되면 더 이상 주기적인 저장이 시도되지 않습니다. 사용 안 함에서 사용으로 전환되면 주기적인 저장이 시작되거나 다시 시작됩니다.
자동 저장 기능은 현재 상태를 비동기적으로 주기적으로 저장하여 최신 상태를 유지합니다.
상태 저장 타이밍을 보다 세밀하게 제어하려는 경우 자동 저장을 false로 설정하고 스크립트를 통해 수동으로 저장할 수 있습니다. 비동기 저장은 다음과 같은 이유로 쉽게 트리거됩니다.
WorldLockingManager.GetInstance().Save();
저장이 비동기적이므로 이전 저장이 진행 중인 동안 다른 Save()
호출 시도가 무시됩니다.
Frozen State 로드
Frozen State를 저장한 후, World Locking Tools를 후속 세션 또는 같은 나중에 같은 세션에서 다시 해당 상태로 다시 로드해야 할 때가 있습니다.
Frozen State를 저장할 때와 마찬가지로, 상태를 로드하는 두 가지 경로가 있습니다.
World Locking Tools Manager에서 AutoLoad 플래그를 사용하도록 설정하면 이전에 저장된 상태가 시작 시 로드됩니다. 로드할 저장된 상태가 없으면 오류가 생성되지 않고, 플래그가 설정되지 않은 것처럼 시작됩니다.
런타임에 AutoLoad 플래그를 false에서 true로 설정해도(예: 스크립트를 통해) 아무런 효과가 없습니다. 자동 로드는 초기 로드 시 발생하거나 전혀 발생하지 않습니다.
그러나 World Locking Tools Manager의 Load 함수를 통해 언제든지 스크립트에서 로드를 시작할 수 있습니다.
WorldLockingManager.GetInstance().Load();
저장과 마찬가지로, 부하는 비동기적으로 수행됩니다. 이전 Load 호출이 진행 중인 동안에는 후속 Load 호출이 무시됩니다.
무엇이 저장되나요?
World Locking Tools 매핑을 재구성, 즉, 가상 세계를 실제 세계와 맞추는 데 필요한 데이터는 네 그룹으로 나눌 수 있습니다.
공간 앵커: World Locking Tools의 Anchor Manager가 내부적으로 만들고 유지 관리하는 공간 앵커의 기본 네트워크는 실제 세계에 필요한 바인딩을 제공합니다. 이러한 앵커는 플랫폼의 기본 스토리지 메커니즘을 통해 유지됩니다.
엔진 상태: 엔진 상태가 유지되므로 엔진이 현재 매핑을 다시 시작할 수 있습니다. 이 상태를 복원하면 이전 세션에서 헤드의 초기 포즈와 같은 불확정성이 제거됩니다.
공간 고정: 애플리케이션이 개별 지점 세트에서 모델링 좌표를 실제 세계와 강제로 정렬하기 위해 추가 공간 핀을 적용한 경우 해당 매핑도 유지됩니다.
좌표 공간: World Locking Tools는 로컬 공간 앵커의 내부 그래프를 저장하여 실제 세계를 기준으로 좌표 공간을 유지합니다.
저장되지 않는 것은 무엇인가요?
설정은 저장되지 않으며 World Locking Tools는 개별 애플리케이션 개체를 저장하거나 복원하지 않습니다. 상태만 저장됩니다. 애플리케이션의 구성 변경(예: WorldLockingManager API를 통해 변경된 내용)은 애플리케이션이 시작될 때마다 Unity Inspector에서 설정한 값으로 초기화됩니다. 또는 Inspector에서 설정되지 않은 경우 코드의 기본값으로 설정됩니다.
예를 들어 애플리케이션에서 사용자에게 월드 고정 상태를 자동 저장하는 옵션을 제공하고, 사용자의 기본 설정이 변경되지 않는 한 모든 세션에서 동일하게 유지하려 한다고 가정하겠습니다. 이 경우 애플리케이션은 다음을 수행해야 합니다.
- 사용자에게 자동 저장 기본 설정을 위한 UX를 (아마도 다른 애플리케이션 설정과 함께) 제공합니다.
- 사용자의 기본 설정을 WorldLockingManager에 전달합니다.
- (아마도 다른 애플리케이션 설정을 포함한) 기본 설정을 파일에 기록합니다.
- 애플리케이션 시작 시 저장된 기본 설정을 로드하고(저장된 기본 설정이 있는 경우) WorldLockingManager에 전달합니다.
자산과 스크립트 간에 상태 설정을 혼합할 때 발생하는 타이밍 문제에 대한 WorldLockingContext의 참고 사항을 확인하세요.