Storage
App storage는 스페이스 내의 App 데이터의 저장공간 입니다.
권장하는 데이터 저장 방식
App.setStorage(string);
App.setStorage 함수는 기존 App storage 데이터 저장 방식을 보완한 데이터 저장 함수입니다.
권장하지 않는 데이터 저장 방식
App.storage = string;
App.save();
위 방식은 앱이 같은 스페이스 내 여러 맵에서 실행중인 경우, 데이터를 덮어쓰는 등의 문제가 발생할 수 있어 사용을 권장드리지 않습니다.
App.getStorage(function(){})
App.getStorage 함수는 앱이 실행중인 같은 스페이스 내 다른 맵의 App storage 데이터 변경 여부를 체크하여 같은 데이터를 가지도록 동기화 해주는 함수입니다.
App.getStorage 함수는 비동기 함수이기 때문에 App.getStorage 함수 다음 라인에 App.storage를 사용하는 코드를 작성할 경우 동기화를 보장할 수 없습니다.
아래 예제코드를 사이드바 앱으로 설치해 같은 스페이스 내 다른 맵에서 Q를 눌러 count 값이 동기화되는지 확인해보세요.
App.onStart.Add(function(){
if(App.storage == null){
App.setStorage(JSON.stringify({count: 0}))
}
})
// Q 키를 누르면 동작하는 함수
App.addOnKeyDown(81,function(player){
// App.storage를 최신화 한 후 callback 함수를 실행합니다.
App.getStorage(function () {
let appStorage = JSON.parse(App.storage);
appStorage.count += 1;
App.sayToAll(`count: ${appStorage.count}`)
// App.setStorage를 사용해 변경내용을 저장합니다.
App.setStorage(JSON.stringify(appStorage));
});
// App.getStorage 함수 다음 라인에 App.storage 코드를 작성할 경우 동기화를 보장할 수 없습니다.
App.sayToAll(App.storage);
})
Last modified 3mo ago