import { _decorator, Component } from 'cc'; const { ccclass, property } = _decorator; @ccclass('UmStorageManager') export class UmStorageManager extends Component { static _instance: UmStorageManager; private _user_id: string = ""; static get instance() { if (UmStorageManager._instance) { return UmStorageManager._instance; } UmStorageManager._instance = new UmStorageManager(); UmStorageManager._instance.initData(); return UmStorageManager._instance; } initData() { this._user_id = this.getUserId(); } getNumberByKey(key: string, default_value: number = 0, isUser: boolean = false): number { key = this._convertKey(key, isUser); let result = localStorage.getItem(key); return result ? Number(result) : default_value; } public setNumberByKey(key: string, value: number, isUser: boolean = false) { key = this._convertKey(key, isUser); localStorage.setItem(key, value.toString()); } public getStringByKey(key: string, default_value: string = "", isUser: boolean = false): string { key = this._convertKey(key, isUser); let result = localStorage.getItem(key); return result ? result : default_value; } public setStringByKey(key: string, value: string, isUser: boolean = false) { key = this._convertKey(key, isUser); localStorage.setItem(key, value); } public getBooleanByKey(key: string, default_value: boolean = false, isUser: boolean = false): boolean { key = this._convertKey(key, isUser); let result = localStorage.getItem(key); if (result) { return result === "true" ? true : false; } else { return default_value; } } public setBooleanByKey(key: string, value: boolean, isUser: boolean = true) { key = this._convertKey(key, isUser); localStorage.setItem(key, value ? "true" : "false"); } public removeKey(key: string) { localStorage.removeItem(key); } public removeAllKey() { localStorage.clear(); } private _convertKey(key: string, isUser: boolean): string { if (isUser) { key = this._user_id + key; } return key; } public encrypt(input: string): string { return input?.length > 0 ? btoa(new TextEncoder().encode(input).toString()) : ""; } public decrypt(input: string): string { return input?.length > 0 ? new TextDecoder().decode(new Uint8Array(atob(input).split(',').map((s: string) => { return Number(s) }))).toString() : ""; } //------- USER ID ---------------------------------- public setUserId(userId: string) { this._user_id = userId; localStorage.setItem("user_id", userId); } public getUserId(): string { let result = localStorage.getItem("user_id"); return result ? result : ""; } }