import { sys } from "cc" export class LocalStorageUtil { private static _inst:LocalStorageUtil; public static getInstance(): LocalStorageUtil{ if(!this._inst)this._inst=new LocalStorageUtil(); return this._inst; } //缓存 temporary: Map; constructor() { this.temporary = new Map(); } private _user_id:string|null; public setUserId(uk:string):void{ this._user_id=uk; } /** * 缓存变量存储区别用户 * @param {*} key * @param {*} value */ set(key: string, value: any): any { if (typeof value === 'object') { try { value = JSON.stringify(value); } catch (e) { console.error(`解析失败,str = ${value}`); return; } } else if (typeof value === 'number') { value = value + ""; } if (this._user_id) sys.localStorage.setItem(this._user_id + "_" + key, value); else sys.localStorage.setItem(key,value); return value; } /** * 获取缓存变量区别用户 * @param {*} key * @returns */ private get(key: string): string { if (null == key) { console.error("存储的key不能为空"); return null!; } let data; if (this._user_id) data = sys.localStorage.getItem(this._user_id + "_" + key); else data = sys.localStorage.getItem(key); if (!data) return undefined; return data; } /** 获取指定关键字的数值 */ getNumber(key: string, defaultValue: number = 0): number { var r = this.get(key); if (r == "0") { return Number(r); } return Number(r) || defaultValue; } /** 获取指定关键字的布尔值 */ getBoolean(key: string): boolean { var r = this.get(key); return Boolean(r) || false; } /** 获取指定关键字的JSON对象 */ getJson(key: string, defaultValue?: any): any { var r = this.get(key); return (r && JSON.parse(r)) || defaultValue; } /** 获取指定关键字的JSON对象 */ getObject(key: string): any { let data= this.get(key); try { const jsonObj = JSON.parse(data) return jsonObj; } catch (error) { return data; } } /** * 删除缓存变量 * @param {*} key */ public removeNormalObject(key: string): any { sys.localStorage.removeItem(key); } /** * 缓存变量存储 * @param {*} key * @param {*} value */ setNormalObject(key: string, value: any): any { sys.localStorage.setItem(key, JSON.stringify(value)); return value; } /** * 获取缓存变量 * @param {*} key * @returns */ getNormalObject(key: string): string { let data; data = sys.localStorage.getItem(key); if (!data) return undefined; try { const jsonObj = JSON.parse(data) return jsonObj; } catch (error) { return data; } } /** * 删除缓存变量 * @param {*} key */ removeObject(key: string) { sys.localStorage.removeItem(key); } /** * 临时变量存储 * @param {*} key * @param {*} value */ setTempObject(key: string, value: any) { this.temporary.set(key, value); } /** * 获取临时变量 * @param {*} key * @returns */ getTempObject(key: string): any { return this.temporary.get(key); } /** * 删除临时变量 * @param {*} key */ removeTempObject(key: string) { this.temporary.delete(key); } }