Unity PlayerPrefs数据持久化 拓展

举报
CoderZ1010 发表于 2022/09/25 07:10:09 2022/09/25
【摘要】 PlayerPrefs 是用于本地持久化保存与读取的类,以键值对的形式将数据进行保存,它支持三种数据类型的保存和读取: int、float、string,以下为对PlayerPrefs的进一步封装,使其支持更多的数据类型。 using System;using UnityEngine; namespace SK.Framework{ ...

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


  
  1. using System;
  2. using UnityEngine;
  3. namespace SK.Framework
  4. {
  5. /// <summary>
  6. /// 本地数据持久化
  7. /// </summary>
  8. public static class PersistentData
  9. {
  10. /// <summary>
  11. /// 保存Int类型数据
  12. /// </summary>
  13. /// <param name="key">Key值</param>
  14. /// <param name="value">Int数据</param>
  15. public static void SetInt(string key, int value)
  16. {
  17. PlayerPrefs.SetInt(key, value);
  18. }
  19. /// <summary>
  20. /// 保存Float类型数据
  21. /// </summary>
  22. /// <param name="key">Key值</param>
  23. /// <param name="value">Float数据</param>
  24. public static void SetFloat(string key, float value)
  25. {
  26. PlayerPrefs.SetFloat(key, value);
  27. }
  28. /// <summary>
  29. /// 保存String类型数据
  30. /// </summary>
  31. /// <param name="key">Key值</param>
  32. /// <param name="value">String数据</param>
  33. public static void SetString(string key, string value)
  34. {
  35. PlayerPrefs.SetString(key, value);
  36. }
  37. /// <summary>
  38. /// 保存Bool类型数据
  39. /// </summary>
  40. /// <param name="key">Key值</param>
  41. /// <param name="value">Bool数据</param>
  42. public static void SetBool(string key, bool value)
  43. {
  44. PlayerPrefs.SetInt(key, value ? 0 : 1);
  45. }
  46. /// <summary>
  47. /// 保存Enum类型数据
  48. /// </summary>
  49. /// <typeparam name="T">Enum类型</typeparam>
  50. /// <param name="key">Key值</param>
  51. /// <param name="value">Enum数据</param>
  52. public static void SetEnum<T>(string key, T value) where T : Enum
  53. {
  54. PlayerPrefs.SetString(key, value.ToString());
  55. }
  56. /// <summary>
  57. /// 保存Object数据 (Object可序列化)
  58. /// </summary>
  59. /// <typeparam name="T">Object类型</typeparam>
  60. /// <param name="key">Key值</param>
  61. /// <param name="value">Value值</param>
  62. public static void SetObject<T>(string key, T value)
  63. {
  64. PlayerPrefs.SetString(key, value.ToJson());
  65. }
  66. /// <summary>
  67. /// 获取Int类型数据
  68. /// </summary>
  69. /// <param name="key">Key值</param>
  70. /// <returns>Value值</returns>
  71. public static int GetInt(string key)
  72. {
  73. return PlayerPrefs.GetInt(key);
  74. }
  75. /// <summary>
  76. /// 获取Float类型数据
  77. /// </summary>
  78. /// <param name="key">Key值</param>
  79. /// <returns>Value值</returns>
  80. public static float GetFloat(string key)
  81. {
  82. return PlayerPrefs.GetFloat(key);
  83. }
  84. /// <summary>
  85. /// 获取String类型数据
  86. /// </summary>
  87. /// <param name="key">Key值</param>
  88. /// <returns>Value值</returns>
  89. public static string GetString(string key)
  90. {
  91. return PlayerPrefs.GetString(key);
  92. }
  93. /// <summary>
  94. /// 获取Bool类型数据
  95. /// </summary>
  96. /// <param name="key">Key值</param>
  97. /// <returns>Value值</returns>
  98. public static bool GetBool(string key)
  99. {
  100. return PlayerPrefs.GetInt(key) == 0;
  101. }
  102. /// <summary>
  103. /// 获取Enum类型数据
  104. /// </summary>
  105. /// <typeparam name="T">Enum类型</typeparam>
  106. /// <param name="key">Key值</param>
  107. /// <returns>Value值</returns>
  108. public static T GetEnum<T>(string key) where T : Enum
  109. {
  110. return (T)Enum.Parse(typeof(T), PlayerPrefs.GetString(key));
  111. }
  112. /// <summary>
  113. /// 获取Object数据
  114. /// </summary>
  115. /// <typeparam name="T">Object类型</typeparam>
  116. /// <param name="key">Key值</param>
  117. /// <returns>Value值</returns>
  118. public static T GetObject<T>(string key)
  119. {
  120. return PlayerPrefs.GetString(key).ToObject<T>();
  121. }
  122. /// <summary>
  123. /// 保存
  124. /// </summary>
  125. public static void Save()
  126. {
  127. PlayerPrefs.Save();
  128. }
  129. /// <summary>
  130. /// 删除指定数据
  131. /// </summary>
  132. /// <param name="key">Key值</param>
  133. public static void Delete(string key)
  134. {
  135. PlayerPrefs.DeleteKey(key);
  136. }
  137. /// <summary>
  138. /// 删除全部数据
  139. /// </summary>
  140. public static void DeleteAll()
  141. {
  142. PlayerPrefs.DeleteAll();
  143. }
  144. /// <summary>
  145. /// 是否存在Key值
  146. /// </summary>
  147. /// <param name="key">Key值</param>
  148. /// <returns>是否存在</returns>
  149. public static bool HasKey(string key)
  150. {
  151. return PlayerPrefs.HasKey(key);
  152. }
  153. }
  154. }

文章来源: coderz.blog.csdn.net,作者:CoderZ1010,版权归原作者所有,如需转载,请联系作者。

原文链接:coderz.blog.csdn.net/article/details/114027572

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。