首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >拓展PlayerPrefs数据持久化存储

拓展PlayerPrefs数据持久化存储

作者头像
CoderZ
发布2022-08-29 15:34:01
发布2022-08-29 15:34:01
6250
举报

PlayerPrefs 是用于本地持久化保存与读取的类,以键值对的形式将数据进行保存,它支持三种数据类型的保存和读取:int、float、string,以下为对PlayerPrefs的进一步封装,使其支持更多的数据类型。

代码语言:javascript
复制
using System;
using UnityEngine;

namespace SK.Framework
{
    /// <summary>
    /// 本地数据持久化
    /// </summary>
    public static class PersistentData
    {
        /// <summary>
        /// 保存Int类型数据
        /// </summary>
        /// <param name="key">Key值</param>
        /// <param name="value">Int数据</param>
        public static void SetInt(string key, int value)
        {
            PlayerPrefs.SetInt(key, value);
        }
        /// <summary>
        /// 保存Float类型数据
        /// </summary>
        /// <param name="key">Key值</param>
        /// <param name="value">Float数据</param>
        public static void SetFloat(string key, float value)
        {
            PlayerPrefs.SetFloat(key, value);
        }
        /// <summary>
        /// 保存String类型数据
        /// </summary>
        /// <param name="key">Key值</param>
        /// <param name="value">String数据</param>
        public static void SetString(string key, string value)
        {
            PlayerPrefs.SetString(key, value);
        }
        /// <summary>
        /// 保存Bool类型数据
        /// </summary>
        /// <param name="key">Key值</param>
        /// <param name="value">Bool数据</param>
        public static void SetBool(string key, bool value)
        {
            PlayerPrefs.SetInt(key, value ? 0 : 1);
        }
        /// <summary>
        /// 保存Enum类型数据
        /// </summary>
        /// <typeparam name="T">Enum类型</typeparam>
        /// <param name="key">Key值</param>
        /// <param name="value">Enum数据</param>
        public static void SetEnum<T>(string key, T value) where T : Enum
        {
            PlayerPrefs.SetString(key, value.ToString());
        }
        /// <summary>
        /// 保存Object数据 (Object可序列化)
        /// </summary>
        /// <typeparam name="T">Object类型</typeparam>
        /// <param name="key">Key值</param>
        /// <param name="value">Value值</param>
        public static void SetObject<T>(string key, T value)
        {
            PlayerPrefs.SetString(key, value.ToJson());
        }

        /// <summary>
        /// 获取Int类型数据
        /// </summary>
        /// <param name="key">Key值</param>
        /// <returns>Value值</returns>
        public static int GetInt(string key)
        {
            return PlayerPrefs.GetInt(key);
        }
        /// <summary>
        /// 获取Float类型数据
        /// </summary>
        /// <param name="key">Key值</param>
        /// <returns>Value值</returns>
        public static float GetFloat(string key)
        {
            return PlayerPrefs.GetFloat(key);
        }
        /// <summary>
        /// 获取String类型数据
        /// </summary>
        /// <param name="key">Key值</param>
        /// <returns>Value值</returns>
        public static string GetString(string key)
        {
            return PlayerPrefs.GetString(key);
        }
        /// <summary>
        /// 获取Bool类型数据
        /// </summary>
        /// <param name="key">Key值</param>
        /// <returns>Value值</returns>
        public static bool GetBool(string key)
        {
            return PlayerPrefs.GetInt(key) == 0;
        }
        /// <summary>
        /// 获取Enum类型数据
        /// </summary>
        /// <typeparam name="T">Enum类型</typeparam>
        /// <param name="key">Key值</param>
        /// <returns>Value值</returns>
        public static T GetEnum<T>(string key) where T : Enum
        {
            return (T)Enum.Parse(typeof(T), PlayerPrefs.GetString(key));
        }
        /// <summary>
        /// 获取Object数据
        /// </summary>
        /// <typeparam name="T">Object类型</typeparam>
        /// <param name="key">Key值</param>
        /// <returns>Value值</returns>
        public static T GetObject<T>(string key)
        {
            return PlayerPrefs.GetString(key).ToObject<T>();
        }

        /// <summary>
        /// 保存
        /// </summary>
        public static void Save()
        {
            PlayerPrefs.Save();
        }
        /// <summary>
        /// 删除指定数据
        /// </summary>
        /// <param name="key">Key值</param>
        public static void Delete(string key)
        {
            PlayerPrefs.DeleteKey(key);
        }
        /// <summary>
        /// 删除全部数据
        /// </summary>
        public static void DeleteAll()
        {
            PlayerPrefs.DeleteAll();
        }
        /// <summary>
        /// 是否存在Key值
        /// </summary>
        /// <param name="key">Key值</param>
        /// <returns>是否存在</returns>
        public static bool HasKey(string key)
        {
            return PlayerPrefs.HasKey(key);
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 当代野生程序猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档