当前位置:   article > 正文

RPGjson保存应用数据_rpg游戏json文件汉化

rpg游戏json文件汉化
  1. json保存
  2. 声明一个人物类,背包类,和身上物品类,技能类,将不确定个数的类再声明一个list类存储起来,在start中声明这个liist 的类名,在保存的脚本中声明新的list,存储的时候生成玩家信息,然后用json工具类序列化成人物类型的字符串
  3. 将其保存在流文件中,生成背包信息,先实例化list,然后遍历背包子物体,当子物体还有子物体的时候,将这个时候的i ,图片,下标数字存储在背包类中,然后将背包类赋给list ,然后实例化背包的list类,然后储存在流路径中,在开始的时候,先看一下流路径中有没有这个文件夹,
  4. 有的话就直接读取这个路径,并且讲其反序列化,然后赋值给初始数据
  5. 在确定背包初始数据的时候,将背包的list类给反序列化,然后遍历背包,个数为list中的个数,将list(i)中的三个数据赋予出去,预设体生成在第i个子物体下,设置坐标为zero,将图片的名字在resourse中进行加载,然后下表也表示出来
  6. using System;
  7. using System.Collections;
  8. using System.Collections.Generic;
  9. using System.IO;
  10. using UnityEngine;
  11. using UnityEngine.UI;
  12. public class JsonSave : MonoBehaviour
  13. {
  14. private GameObject _player;
  15. private Transform _bag;
  16. private Transform _skill;
  17. private Transform _equipOnTf;
  18. private HeroProperty _heroProperty;
  19. private AllTask _allTask;
  20. private PlayerMsg _playerMsg;
  21. private BagMsgs _bagMsgs;
  22. private EquipsOn _equipsOn;
  23. private SkillMsg _skillMsg;
  24. //格子预设体
  25. public GameObject cellPre;
  26. private void Awake()
  27. {
  28. _player=GameObject.FindWithTag("Player").gameObject;
  29. _heroProperty = GameObject.FindWithTag("Property").GetComponent<HeroProperty>();
  30. _bag = _heroProperty.transform.parent.GetChild(0).GetChild(2).GetChild(2).GetChild(0).GetChild(0).transform;
  31. _skill = _heroProperty.transform.parent.GetChild(0).GetChild(6).transform;
  32. _allTask = _heroProperty.transform.parent.GetChild(0).GetChild(7).GetComponent<AllTask>();
  33. _equipOnTf = _heroProperty.transform;
  34. //背包
  35. _bagMsgs=new BagMsgs();
  36. //身上装备
  37. _equipsOn=new EquipsOn();
  38. //反序列化
  39. if (File.Exists(Application.dataPath + @"/" + "/StreamingAssets/"+"PlayerMsg.json"))
  40. {
  41. string playerStr= JsonTools.Load("/StreamingAssets/"+"PlayerMsg.json");
  42. //反序列化
  43. PlayerMsg playerMsg = JsonTools.DeSerializable<PlayerMsg>(playerStr);
  44. _player.transform.position = playerMsg.playerTf;
  45. _heroProperty.hp = playerMsg.hp;
  46. _heroProperty.mp = playerMsg.mp;
  47. _heroProperty.attack = playerMsg.attack;
  48. _heroProperty.speed = playerMsg.speed;
  49. _heroProperty.money = playerMsg.money;
  50. _heroProperty.allHp = playerMsg.allHp;
  51. _heroProperty.allMp = playerMsg.allMp;
  52. _heroProperty.allNum = playerMsg.allNum;
  53. _heroProperty._texthp.text = playerMsg.textHp;
  54. _heroProperty._textmp.text = playerMsg.textMp;
  55. _heroProperty._textspeed.text = playerMsg.textSpeed;
  56. _heroProperty._textattack.text = playerMsg.textAttack;
  57. _heroProperty._textmoney.text = playerMsg.textMoney;
  58. _allTask.enemyNum = playerMsg.enemyNum;
  59. }
  60. if (File.Exists(Application.dataPath + @"/" + "/StreamingAssets/"+"BagMsg.json"))
  61. {
  62. string bagStr= JsonTools.Load("/StreamingAssets/"+"BagMsg.json");
  63. //反序列化
  64. BagMsgs _bagMsgs = JsonTools.DeSerializable<BagMsgs>(bagStr);
  65. for (int i = 0; i < _bagMsgs.bagMsgs.Count; i++)
  66. {
  67. GameObject obj = Instantiate(cellPre, _bag.transform.position, cellPre.transform.rotation,
  68. _heroProperty.transform.parent.GetChild(0).GetChild(2).GetChild(2).GetChild(0).GetChild(0)
  69. .GetChild(_bagMsgs.bagMsgs[i].spTf));
  70. obj.transform.localPosition=Vector2.zero;
  71. obj.GetComponent<Image>().sprite = Resources.Load<Sprite>(_bagMsgs.bagMsgs[i].spName);
  72. obj.transform.GetChild(0).GetComponent<Text>().text = _bagMsgs.bagMsgs[i].spNum;
  73. }
  74. }
  75. if (File.Exists(Application.dataPath + @"/" + "/StreamingAssets/"+"EquipsOnMsg.json"))
  76. {
  77. string equipStr = JsonTools.Load("/StreamingAssets/" + "EquipsOnMsg.json");
  78. EquipsOn _equipsOn = JsonTools.DeSerializable<EquipsOn>(equipStr);
  79. for (int i = 0; i < _equipsOn.equipsOn.Count; i++)
  80. {
  81. GameObject obj = Instantiate(cellPre, _equipOnTf.position, cellPre.transform.rotation,
  82. _equipOnTf.GetChild(_equipsOn.equipsOn[i].spTf));
  83. obj.transform.localPosition=Vector2.zero;
  84. obj.GetComponent<Image>().sprite = Resources.Load<Sprite>(_equipsOn.equipsOn[i].spName);;
  85. }
  86. }
  87. if (File.Exists(Application.dataPath + @"/" + "/StreamingAssets/"+"SkillMsg.json"))
  88. {
  89. string skillStr= JsonTools.Load("/StreamingAssets/"+"SkillMsg.json");
  90. //反序列化
  91. SkillMsg skillMsg = JsonTools.DeSerializable<SkillMsg>(skillStr);
  92. _skill.GetChild(2).GetChild(0).gameObject.SetActive(skillMsg.one);
  93. Debug.Log(_skill.GetChild(2).GetChild(0).gameObject.activeSelf);
  94. _skill.GetChild(3).GetChild(0).gameObject.SetActive(skillMsg.two);
  95. _skill.GetChild(4).GetChild(0).gameObject.SetActive(skillMsg.three);
  96. _skill.GetComponent<SkillTree>().up2=skillMsg.one;
  97. _skill.GetComponent<SkillTree>().up3=skillMsg.two;
  98. _skill.GetComponent<SkillTree>().up4=skillMsg.three;
  99. if (skillMsg.one)
  100. {
  101. _skill.GetChild(2).GetChild(1).GetComponent<Image>().color=Color.white;
  102. }
  103. else
  104. {
  105. _skill.GetChild(2).GetChild(1).GetComponent<Image>().color=Color.gray;
  106. }
  107. if (skillMsg.two)
  108. {
  109. _skill.GetChild(3).GetChild(1).GetComponent<Image>().color = Color.white;
  110. }
  111. else
  112. {
  113. _skill.GetChild(3).GetChild(1).GetComponent<Image>().color=Color.gray;
  114. }
  115. if (skillMsg.three)
  116. {
  117. _skill.GetChild(4).GetChild(1).GetComponent<Image>().color=Color.white;
  118. }
  119. else
  120. {
  121. _skill.GetChild(4).GetChild(1).GetComponent<Image>().color=Color.gray;
  122. }
  123. }
  124. }
  125. //存储
  126. public void JsonS()
  127. {
  128. //玩家信息
  129. _playerMsg=new PlayerMsg(_player.transform.position,_heroProperty.hp,_heroProperty.mp,_heroProperty.attack,
  130. _heroProperty.speed,_heroProperty.money,_heroProperty.allHp,_heroProperty.allMp,
  131. _heroProperty.allNum,_allTask.enemyNum,_heroProperty._texthp.text,
  132. _heroProperty._textmp.text, _heroProperty._textspeed.text,_heroProperty._textattack.text,
  133. _heroProperty._textmoney.text);
  134. string playerStr= JsonTools.Serializable(_playerMsg);
  135. JsonTools.Save( "/StreamingAssets/"+"PlayerMsg.json",playerStr);
  136. //技能信息
  137. bool a = _skill.GetChild(2).GetChild(0).gameObject.activeSelf;
  138. bool b = _skill.GetChild(3).GetChild(0).gameObject.activeSelf;
  139. bool c = _skill.GetChild(4).GetChild(0).gameObject.activeSelf;
  140. _skillMsg=new SkillMsg(a,b,c);
  141. string skillStr= JsonTools.Serializable(_skillMsg);
  142. JsonTools.Save( "/StreamingAssets/"+"SkillMsg.json",skillStr);
  143. //背包信息
  144. _bagMsgs.bagMsgs=new List<BagMsg>();
  145. for (int i = 0; i < _bag.childCount; i++)
  146. {
  147. if (_bag.GetChild(i).childCount>0)
  148. {
  149. string spriteNam = _bag.GetChild(i).GetChild(0).GetComponent<Image>().sprite.name;
  150. string spNum = _bag.GetChild(i).GetChild(0).GetChild(0).GetComponent<Text>().text;
  151. BagMsg bagMsg=new BagMsg(i,spriteNam,spNum);
  152. _bagMsgs.bagMsgs.Add(bagMsg);
  153. }
  154. }
  155. string bagStr= JsonTools.Serializable(_bagMsgs);
  156. JsonTools.Save("/StreamingAssets/"+"BagMsg.json",bagStr);
  157. _equipsOn.equipsOn=new List<EquipOn>();
  158. //身上装备信息
  159. for (int i = 0; i < _equipOnTf.childCount-8; i++)
  160. {
  161. if (_equipOnTf.GetChild(i).childCount>0)
  162. {
  163. string sprite=_equipOnTf.GetChild(i).GetChild(0).GetComponent<Image>().sprite.name;
  164. EquipOn _equipOn=new EquipOn(i,sprite);
  165. _equipsOn.equipsOn.Add(_equipOn);
  166. }
  167. }
  168. string equipStr = JsonTools.Serializable(_equipsOn);
  169. JsonTools.Save("/StreamingAssets/"+"EquipsOnMsg.json",equipStr);
  170. }
  171. }
  1. 登陆注册
  2. 注册的时候声明一个账户类并将其用list存起来,先看文件中是否存在流路径,如果存在的话将路径给加载出来,将其list类反序列化,然后遍历那些账户,将其再次给添加进去
  3. 当输入账户的时候,遍历已有的注册内容,如果某一个账户名字与之相等,就直接注册失败,并且跳出失败界面 再协程晚一秒返回注册界面,当遍历到最后一个直接返成功并返回登录界面,然后将其添加进去list,然后将其序列化,保存在流路径中
  4. 登陆的时候也有要,先加载流路径下的文件,再将其反序列化,遍历所有list,如果账号密码都相等的话直接登陆成功 进入start界面,当遍历到最后一个数的时候,直接跳出并显示失败,再加一个清除已输入的账号密码的功能,让字符串为empty
  5. using System;
  6. using System.Collections;
  7. using System.Collections.Generic;
  8. using System.IO;
  9. using UnityEngine;
  10. using UnityEngine.UI;
  11. public class Login1 : MonoBehaviour
  12. {
  13. private InputField _textName;
  14. private InputField _textPassWord;
  15. public Logins _logins;
  16. private MenuManager _manager;
  17. private void Awake()
  18. {
  19. _manager = transform.parent.parent.GetChild(7).GetComponent<MenuManager>();
  20. }
  21. private void Start()
  22. {
  23. _textName = transform.GetChild(0).GetComponent<InputField>();
  24. _textPassWord=transform.GetChild(1).GetComponent<InputField>();
  25. JsonTools.DefaultName = "/StreamingAssets/" + "/Login/" + "Login.json";
  26. //如果已经存在路径
  27. if (File.Exists(Application.dataPath + @"/" + JsonTools.DefaultName))
  28. {
  29. //先把以前注册的又拿出来重新赋值
  30. string login2 = JsonTools.Load(JsonTools.DefaultName);
  31. Logins _login = JsonTools.DeSerializable<Logins>(login2);
  32. foreach (Login item in _login.logins)
  33. {
  34. _logins.logins.Add(item);
  35. }
  36. }
  37. }
  38. //注册保存
  39. public void Save()
  40. {
  41. //判断是否已经注册过
  42. Login login1=new Login(_textName.text,_textPassWord.text);
  43. for (int i = 0; i < _logins.logins.Count; i++)
  44. {
  45. if (_logins.logins[i].admin==_textName.text)
  46. {
  47. //注册失败
  48. _manager.GoToMenu(_manager.transform.parent.GetChild(13).gameObject);
  49. DelayController.Instance.DelayToCall(() =>
  50. {
  51. _manager.GoToMenu(transform.parent.gameObject);
  52. },1);
  53. return;
  54. }
  55. if (i==_logins.logins.Count-1)
  56. {
  57. //注册成功
  58. _manager.GoToMenu(_manager.transform.parent.GetChild(12).gameObject);
  59. DelayController.Instance.DelayToCall(() =>
  60. {
  61. _manager.GoToMenu(_manager.transform.parent.GetChild(0).gameObject);
  62. },1);
  63. }
  64. }
  65. //添加进去列表
  66. _logins.logins.Add(login1);
  67. //序列化
  68. string loginStr= JsonTools.Serializable(_logins);
  69. //保存在路径中
  70. JsonTools.Save(JsonTools.DefaultName,loginStr);
  71. }
  72. //输入登录
  73. public void InputMsg()
  74. {
  75. //加载路径
  76. string login2 = JsonTools.Load(JsonTools.DefaultName);
  77. //反序列化
  78. Logins _login = JsonTools.DeSerializable<Logins>(login2);
  79. //遍历
  80. for (int i = 0; i < _login.logins.Count; i++)
  81. {
  82. if (_login.logins[i].admin==_textName.text&&_login.logins[i].passWord==_textPassWord.text)
  83. {
  84. //登录成功
  85. _manager.GoToMenu(_manager.transform.parent.GetChild(10).gameObject);
  86. DelayController.Instance.DelayToCall(() =>
  87. {
  88. _manager.GoToMenu(_manager.transform.parent.GetChild(5).gameObject);
  89. },1);
  90. return;
  91. }
  92. if (i==_login.logins.Count-1)
  93. {
  94. //登陆失败
  95. _manager.GoToMenu(_manager.transform.parent.GetChild(11).gameObject);
  96. DelayController.Instance.DelayToCall(() =>
  97. {
  98. _manager.GoToMenu(transform.parent.gameObject);
  99. },1);
  100. }
  101. }
  102. }
  103. //清除账号密码
  104. public void CleanNum()
  105. {
  106. Debug.Log(_textName.text);
  107. _textName.text=String.Empty;
  108. _textPassWord.text=String.Empty;
  109. }
  110. }

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

闽ICP备14008679号