当前位置:   article > 正文

unity---本地存储_unity本地存储

unity本地存储

目录

1.基础存储

2.单个gameObjct数据存储

2.1实体类

2.2赋值存储

3.多个gameObject数据存储

3.1实体类

3.2list 转json 

3.3存储与解析



1.基础存储

unity提供的现成可用的本地存储方式:

  1. PlayerPrefs.SetFloat("size", 1.5f);
  2.         PlayerPrefs.SetInt("age", 10);
  3.         PlayerPrefs.SetString("name", "David");

2.单个gameObjct数据存储

2.1实体类

  1. using UnityEngine;
  2. public class Entity_fwy
  3. {
  4. public enum_fwy state;
  5. public string name_fwy = "";
  6. public int age;
  7. }

2.2赋值存储

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using Newtonsoft.Json;
  4. using UnityEngine;
  5. using static Pp_enum;
  6. public class Contr_fwy : MonoBehaviour
  7. {
  8. void Start()
  9. {
  10. Entity_fwy entityFwy = new Entity_fwy();
  11. entityFwy.state = enum_fwy.idle;
  12. entityFwy.name_fwy = "XiaoBai";
  13. entityFwy.age = 18;
  14. //存储
  15. PlayerPrefs.SetString("fwy", JsonConvert.SerializeObject(entityFwy));
  16. //获取
  17. Entity_fwy enFwy = JsonConvert.DeserializeObject<Entity_fwy>(PlayerPrefs.GetString("fwy", ""));
  18. Debug.LogError("cc:" + enFwy.name_fwy);
  19. }
  20. }

3.多个gameObject数据存储

3.1实体类

  1. public class DataSave
  2. {
  3. public string obj_name;
  4. public int obj_id;
  5. public Vector3 obj_pos;
  6. public int obj_scale;
  7. }

3.2list 转json 

  1. /// <summary>
  2. /// list 转json
  3. /// </summary>
  4. public static string ToJson<T>(this T list)
  5. {
  6. JsonSerializerSettings settings = new JsonSerializerSettings();
  7. settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
  8. return JsonConvert.SerializeObject(list, settings);
  9. }

3.3存储与解析

  1. [HideInInspector]
  2. public List<DataSave> list_sbHave = new List<DataSave>();
  3. public void dataSave( string str)
  4. {
  5. switch(str){
  6. case "sb":
  7. //string str = MyUtil.ToJson(list_dataHave_gt);
  8. string str = list_sbHave.ToJson();
  9. Debug.LogError("save:" + str);
  10. PlayerPrefs.SetString("have_sb", str);
  11. break;
  12. ......
  13. }
  14. public void DataGet()
  15. {
  16. string sb_str = PlayerPrefs.GetString("have_sb", "");
  17. if (string.IsNullOrEmpty(sb_str))
  18. {
  19. //默认拥有柜台
  20. DataSheBei ds1 = new DataSheBei
  21. {
  22. obj_name = "gt",
  23. obj_id = 12,
  24. obj_pos = new Vector3(-0.02f, 1.99f, -5),
  25. obj_scale = 1
  26. };
  27. PlayerPrefs.SetInt("barIndex", 0);
  28. list_sbHave.Add(ds1);
  29. //默认拥有1个四人桌
  30. DataSheBei ds2 = new DataSheBei
  31. {
  32. obj_name = "zy",
  33. obj_id = 1,
  34. obj_pos = new Vector3(-2.32f, 0.815f, -5),
  35. obj_scale = 1
  36. };
  37. PlayerPrefs.SetInt("tableIndex", 0);
  38. list_sbHave.Add(ds2);
  39. }
  40. else
  41. {
  42. JArray ja = (JArray)JsonConvert.DeserializeObject(sb_str);
  43. Debug.LogError("sb:" + ja.Count);
  44. for (int i = 0; i < ja.Count; i++)
  45. {
  46. DataSheBei ds = new DataSheBei();
  47. ds.obj_name = ja[i]["obj_name"].ToString();
  48. ds.obj_id = int.Parse(ja[i]["obj_id"].ToString());
  49. JObject jo = JObject.Parse(ja[i]["obj_pos"].ToString());
  50. ds.obj_pos = new Vector3(float.Parse(jo["x"].ToString()), float.Parse(jo["y"].ToString()), -5);
  51. ds.obj_scale = int.Parse(ja[i]["obj_scale"].ToString());
  52. list_sbHave.Add(ds);
  53. }
  54. }
  55. InitSbHave();
  56. ......
  57. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/794142
推荐阅读
相关标签
  

闽ICP备14008679号