大学建设网站的意义,网页版梦幻西游三借芭蕉扇,十大免费网页制作平台,速贝cms建站系统Unity带有时效性的数据存储
引言
在Unity项目开发中#xff0c;有时候会遇到带有时效性的数据存储#xff0c;比如账号信息、token等#xff0c;都是具有时效性的#xff0c;这时候我们就需要在这些信息过期的时候将对应的信息作废。
实现
这个功能怎么实现呢#xff…Unity带有时效性的数据存储
引言
在Unity项目开发中有时候会遇到带有时效性的数据存储比如账号信息、token等都是具有时效性的这时候我们就需要在这些信息过期的时候将对应的信息作废。
实现
这个功能怎么实现呢还是利用Unity自带的PlayerPrefs功能来存储数据只是在存储的时候如果数据有时效性我们需要给数据再存储一个对应的key值来记录时间。获取数据的时候如果数据有时效性我们判断对应的时间戳来判定数据的有效性。
完整代码
using System;
using UnityEngine;/// summary
/// 本地数据缓存
/// Playerprefs的封装
/// /summary
public class LocalCache
{/// summary/// 时间戳结尾/// /summarypublic const string TimeEnd _TIMEEND;/// summary/// 获取缓存的string数据/// /summary/// param namekey/param/// returns返回结果可能为空/returnspublic static string GetString(string key){string timeKey key TimeEnd;if (PlayerPrefs.HasKey(timeKey)){long time long.Parse(PlayerPrefs.GetString(timeKey));if (CurrentTime() time){//信息过期作废PlayerPrefs.DeleteKey(key);PlayerPrefs.DeleteKey(timeKey);return null;}else{return PlayerPrefs.GetString(key);}}else{return PlayerPrefs.GetString(key);}}/// summary/// 存储string/// /summary/// param namekey/param/// param namevalue/param/// param nametime小于等于0表示永久存储其他表示有存储时间,单位毫秒ms/parampublic static void SetString(string key, string value, int time -1){PlayerPrefs.SetString(key, value);if (time 0){//存储对应的时间戳string timeKey key TimeEnd;double currentTime CurrentTime();long endTime (long)(currentTime time);PlayerPrefs.SetString(timeKey, endTime.ToString());}}/// summary/// 获取缓存的string数据/// /summary/// param namekey/param/// returns返回结果可能为空/returnspublic static int? GetInt(string key){string timeKey key TimeEnd;if (PlayerPrefs.HasKey(timeKey)){long time long.Parse(PlayerPrefs.GetString(timeKey));if (CurrentTime() time){//信息过期作废PlayerPrefs.DeleteKey(key);PlayerPrefs.DeleteKey(timeKey);return null;}else{return PlayerPrefs.GetInt(key);}}else{return PlayerPrefs.GetInt(key);}}/// summary/// 存储string/// /summary/// param namekey/param/// param namevalue/param/// param nametime小于等于0表示永久存储其他表示有存储时间,单位毫秒ms/parampublic static void SetInt(string key, int value, int time -1){PlayerPrefs.SetInt(key, value);if (time 0){//存储对应的时间戳string timeKey key TimeEnd;double currentTime CurrentTime();long endTime (long)(currentTime time);PlayerPrefs.SetString(timeKey, endTime.ToString());}}/// summary/// 获取缓存的string数据/// /summary/// param namekey/param/// returns返回结果可能为空/returnspublic static float? GetFloat(string key){string timeKey key TimeEnd;if (PlayerPrefs.HasKey(timeKey)){long time long.Parse(PlayerPrefs.GetString(timeKey));if (CurrentTime() time){//信息过期作废PlayerPrefs.DeleteKey(key);PlayerPrefs.DeleteKey(timeKey);return null;}else{return PlayerPrefs.GetFloat(key);}}else{return PlayerPrefs.GetFloat(key);}}/// summary/// 存储string/// /summary/// param namekey/param/// param namevalue/param/// param nametime小于等于0表示永久存储其他表示有存储时间,单位毫秒ms/parampublic static void SetFloat(string key, float value, int time -1){PlayerPrefs.SetFloat(key, value);if (time 0){//存储对应的时间戳string timeKey key TimeEnd;double currentTime CurrentTime();long endTime (long)(currentTime time);PlayerPrefs.SetString(timeKey, endTime.ToString());}}/// summary/// 获取当前时间的时间戳/// /summary/// returns/returnspublic static double CurrentTime(){return (DateTime.Now - new DateTime(1970, 1, 1)).TotalMilliseconds;}
}
尾语
这里实现的只是个小功能但是平时多记录一些这种小功能可以减少正式项目开发中的很多时间毕竟这种小功能从开发到测试还是需要不少时间的。
如果有些的不对的地方欢迎各位大佬批评指正。