赞
踩
- json保存
- 声明一个人物类,背包类,和身上物品类,技能类,将不确定个数的类再声明一个list类存储起来,在start中声明这个liist 的类名,在保存的脚本中声明新的list,存储的时候生成玩家信息,然后用json工具类序列化成人物类型的字符串
- 将其保存在流文件中,生成背包信息,先实例化list,然后遍历背包子物体,当子物体还有子物体的时候,将这个时候的i ,图片,下标数字存储在背包类中,然后将背包类赋给list ,然后实例化背包的list类,然后储存在流路径中,在开始的时候,先看一下流路径中有没有这个文件夹,
- 有的话就直接读取这个路径,并且讲其反序列化,然后赋值给初始数据
- 在确定背包初始数据的时候,将背包的list类给反序列化,然后遍历背包,个数为list中的个数,将list(i)中的三个数据赋予出去,预设体生成在第i个子物体下,设置坐标为zero,将图片的名字在resourse中进行加载,然后下表也表示出来
-
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.IO;
- using UnityEngine;
- using UnityEngine.UI;
-
- public class JsonSave : MonoBehaviour
- {
- private GameObject _player;
- private Transform _bag;
- private Transform _skill;
- private Transform _equipOnTf;
- private HeroProperty _heroProperty;
- private AllTask _allTask;
- private PlayerMsg _playerMsg;
- private BagMsgs _bagMsgs;
- private EquipsOn _equipsOn;
- private SkillMsg _skillMsg;
- //格子预设体
- public GameObject cellPre;
-
-
- private void Awake()
- {
- _player=GameObject.FindWithTag("Player").gameObject;
- _heroProperty = GameObject.FindWithTag("Property").GetComponent<HeroProperty>();
- _bag = _heroProperty.transform.parent.GetChild(0).GetChild(2).GetChild(2).GetChild(0).GetChild(0).transform;
- _skill = _heroProperty.transform.parent.GetChild(0).GetChild(6).transform;
- _allTask = _heroProperty.transform.parent.GetChild(0).GetChild(7).GetComponent<AllTask>();
- _equipOnTf = _heroProperty.transform;
- //背包
- _bagMsgs=new BagMsgs();
- //身上装备
- _equipsOn=new EquipsOn();
- //反序列化
- if (File.Exists(Application.dataPath + @"/" + "/StreamingAssets/"+"PlayerMsg.json"))
- {
- string playerStr= JsonTools.Load("/StreamingAssets/"+"PlayerMsg.json");
- //反序列化
- PlayerMsg playerMsg = JsonTools.DeSerializable<PlayerMsg>(playerStr);
- _player.transform.position = playerMsg.playerTf;
- _heroProperty.hp = playerMsg.hp;
- _heroProperty.mp = playerMsg.mp;
- _heroProperty.attack = playerMsg.attack;
- _heroProperty.speed = playerMsg.speed;
- _heroProperty.money = playerMsg.money;
- _heroProperty.allHp = playerMsg.allHp;
- _heroProperty.allMp = playerMsg.allMp;
- _heroProperty.allNum = playerMsg.allNum;
- _heroProperty._texthp.text = playerMsg.textHp;
- _heroProperty._textmp.text = playerMsg.textMp;
- _heroProperty._textspeed.text = playerMsg.textSpeed;
- _heroProperty._textattack.text = playerMsg.textAttack;
- _heroProperty._textmoney.text = playerMsg.textMoney;
- _allTask.enemyNum = playerMsg.enemyNum;
- }
- if (File.Exists(Application.dataPath + @"/" + "/StreamingAssets/"+"BagMsg.json"))
- {
- string bagStr= JsonTools.Load("/StreamingAssets/"+"BagMsg.json");
- //反序列化
- BagMsgs _bagMsgs = JsonTools.DeSerializable<BagMsgs>(bagStr);
- for (int i = 0; i < _bagMsgs.bagMsgs.Count; i++)
- {
- GameObject obj = Instantiate(cellPre, _bag.transform.position, cellPre.transform.rotation,
- _heroProperty.transform.parent.GetChild(0).GetChild(2).GetChild(2).GetChild(0).GetChild(0)
- .GetChild(_bagMsgs.bagMsgs[i].spTf));
-
- obj.transform.localPosition=Vector2.zero;
- obj.GetComponent<Image>().sprite = Resources.Load<Sprite>(_bagMsgs.bagMsgs[i].spName);
- obj.transform.GetChild(0).GetComponent<Text>().text = _bagMsgs.bagMsgs[i].spNum;
- }
- }
- if (File.Exists(Application.dataPath + @"/" + "/StreamingAssets/"+"EquipsOnMsg.json"))
- {
- string equipStr = JsonTools.Load("/StreamingAssets/" + "EquipsOnMsg.json");
- EquipsOn _equipsOn = JsonTools.DeSerializable<EquipsOn>(equipStr);
- for (int i = 0; i < _equipsOn.equipsOn.Count; i++)
- {
- GameObject obj = Instantiate(cellPre, _equipOnTf.position, cellPre.transform.rotation,
- _equipOnTf.GetChild(_equipsOn.equipsOn[i].spTf));
- obj.transform.localPosition=Vector2.zero;
- obj.GetComponent<Image>().sprite = Resources.Load<Sprite>(_equipsOn.equipsOn[i].spName);;
- }
- }
- if (File.Exists(Application.dataPath + @"/" + "/StreamingAssets/"+"SkillMsg.json"))
- {
- string skillStr= JsonTools.Load("/StreamingAssets/"+"SkillMsg.json");
- //反序列化
- SkillMsg skillMsg = JsonTools.DeSerializable<SkillMsg>(skillStr);
- _skill.GetChild(2).GetChild(0).gameObject.SetActive(skillMsg.one);
- Debug.Log(_skill.GetChild(2).GetChild(0).gameObject.activeSelf);
- _skill.GetChild(3).GetChild(0).gameObject.SetActive(skillMsg.two);
- _skill.GetChild(4).GetChild(0).gameObject.SetActive(skillMsg.three);
- _skill.GetComponent<SkillTree>().up2=skillMsg.one;
- _skill.GetComponent<SkillTree>().up3=skillMsg.two;
- _skill.GetComponent<SkillTree>().up4=skillMsg.three;
- if (skillMsg.one)
- {
- _skill.GetChild(2).GetChild(1).GetComponent<Image>().color=Color.white;
- }
- else
- {
- _skill.GetChild(2).GetChild(1).GetComponent<Image>().color=Color.gray;
- }
-
- if (skillMsg.two)
- {
- _skill.GetChild(3).GetChild(1).GetComponent<Image>().color = Color.white;
- }
- else
- {
- _skill.GetChild(3).GetChild(1).GetComponent<Image>().color=Color.gray;
- }
- if (skillMsg.three)
- {
- _skill.GetChild(4).GetChild(1).GetComponent<Image>().color=Color.white;
- }
- else
- {
- _skill.GetChild(4).GetChild(1).GetComponent<Image>().color=Color.gray;
- }
- }
-
- }
-
-
-
- //存储
- public void JsonS()
- {
- //玩家信息
- _playerMsg=new PlayerMsg(_player.transform.position,_heroProperty.hp,_heroProperty.mp,_heroProperty.attack,
- _heroProperty.speed,_heroProperty.money,_heroProperty.allHp,_heroProperty.allMp,
- _heroProperty.allNum,_allTask.enemyNum,_heroProperty._texthp.text,
- _heroProperty._textmp.text, _heroProperty._textspeed.text,_heroProperty._textattack.text,
- _heroProperty._textmoney.text);
-
- string playerStr= JsonTools.Serializable(_playerMsg);
- JsonTools.Save( "/StreamingAssets/"+"PlayerMsg.json",playerStr);
- //技能信息
- bool a = _skill.GetChild(2).GetChild(0).gameObject.activeSelf;
- bool b = _skill.GetChild(3).GetChild(0).gameObject.activeSelf;
- bool c = _skill.GetChild(4).GetChild(0).gameObject.activeSelf;
- _skillMsg=new SkillMsg(a,b,c);
- string skillStr= JsonTools.Serializable(_skillMsg);
- JsonTools.Save( "/StreamingAssets/"+"SkillMsg.json",skillStr);
-
- //背包信息
- _bagMsgs.bagMsgs=new List<BagMsg>();
- for (int i = 0; i < _bag.childCount; i++)
- {
- if (_bag.GetChild(i).childCount>0)
- {
- string spriteNam = _bag.GetChild(i).GetChild(0).GetComponent<Image>().sprite.name;
- string spNum = _bag.GetChild(i).GetChild(0).GetChild(0).GetComponent<Text>().text;
- BagMsg bagMsg=new BagMsg(i,spriteNam,spNum);
- _bagMsgs.bagMsgs.Add(bagMsg);
- }
- }
- string bagStr= JsonTools.Serializable(_bagMsgs);
- JsonTools.Save("/StreamingAssets/"+"BagMsg.json",bagStr);
-
- _equipsOn.equipsOn=new List<EquipOn>();
- //身上装备信息
- for (int i = 0; i < _equipOnTf.childCount-8; i++)
- {
- if (_equipOnTf.GetChild(i).childCount>0)
- {
- string sprite=_equipOnTf.GetChild(i).GetChild(0).GetComponent<Image>().sprite.name;
- EquipOn _equipOn=new EquipOn(i,sprite);
- _equipsOn.equipsOn.Add(_equipOn);
- }
- }
- string equipStr = JsonTools.Serializable(_equipsOn);
- JsonTools.Save("/StreamingAssets/"+"EquipsOnMsg.json",equipStr);
- }
-
- }

- 登陆注册
- 注册的时候声明一个账户类并将其用list存起来,先看文件中是否存在流路径,如果存在的话将路径给加载出来,将其list类反序列化,然后遍历那些账户,将其再次给添加进去
- 当输入账户的时候,遍历已有的注册内容,如果某一个账户名字与之相等,就直接注册失败,并且跳出失败界面 再协程晚一秒返回注册界面,当遍历到最后一个直接返成功并返回登录界面,然后将其添加进去list,然后将其序列化,保存在流路径中
- 登陆的时候也有要,先加载流路径下的文件,再将其反序列化,遍历所有list,如果账号密码都相等的话直接登陆成功 进入start界面,当遍历到最后一个数的时候,直接跳出并显示失败,再加一个清除已输入的账号密码的功能,让字符串为empty
-
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.IO;
- using UnityEngine;
- using UnityEngine.UI;
-
- public class Login1 : MonoBehaviour
- {
- private InputField _textName;
- private InputField _textPassWord;
- public Logins _logins;
- private MenuManager _manager;
-
- private void Awake()
- {
- _manager = transform.parent.parent.GetChild(7).GetComponent<MenuManager>();
- }
-
- private void Start()
- {
- _textName = transform.GetChild(0).GetComponent<InputField>();
- _textPassWord=transform.GetChild(1).GetComponent<InputField>();
-
- JsonTools.DefaultName = "/StreamingAssets/" + "/Login/" + "Login.json";
- //如果已经存在路径
- if (File.Exists(Application.dataPath + @"/" + JsonTools.DefaultName))
- {
- //先把以前注册的又拿出来重新赋值
- string login2 = JsonTools.Load(JsonTools.DefaultName);
- Logins _login = JsonTools.DeSerializable<Logins>(login2);
- foreach (Login item in _login.logins)
- {
- _logins.logins.Add(item);
- }
- }
- }
-
- //注册保存
- public void Save()
- {
- //判断是否已经注册过
- Login login1=new Login(_textName.text,_textPassWord.text);
- for (int i = 0; i < _logins.logins.Count; i++)
- {
- if (_logins.logins[i].admin==_textName.text)
- {
- //注册失败
- _manager.GoToMenu(_manager.transform.parent.GetChild(13).gameObject);
- DelayController.Instance.DelayToCall(() =>
- {
- _manager.GoToMenu(transform.parent.gameObject);
- },1);
- return;
- }
- if (i==_logins.logins.Count-1)
- {
- //注册成功
- _manager.GoToMenu(_manager.transform.parent.GetChild(12).gameObject);
- DelayController.Instance.DelayToCall(() =>
- {
- _manager.GoToMenu(_manager.transform.parent.GetChild(0).gameObject);
- },1);
- }
- }
- //添加进去列表
- _logins.logins.Add(login1);
- //序列化
- string loginStr= JsonTools.Serializable(_logins);
- //保存在路径中
- JsonTools.Save(JsonTools.DefaultName,loginStr);
- }
-
- //输入登录
- public void InputMsg()
- {
- //加载路径
- string login2 = JsonTools.Load(JsonTools.DefaultName);
- //反序列化
- Logins _login = JsonTools.DeSerializable<Logins>(login2);
- //遍历
- for (int i = 0; i < _login.logins.Count; i++)
- {
- if (_login.logins[i].admin==_textName.text&&_login.logins[i].passWord==_textPassWord.text)
- {
- //登录成功
- _manager.GoToMenu(_manager.transform.parent.GetChild(10).gameObject);
- DelayController.Instance.DelayToCall(() =>
- {
- _manager.GoToMenu(_manager.transform.parent.GetChild(5).gameObject);
- },1);
- return;
- }
-
- if (i==_login.logins.Count-1)
- {
- //登陆失败
- _manager.GoToMenu(_manager.transform.parent.GetChild(11).gameObject);
- DelayController.Instance.DelayToCall(() =>
- {
- _manager.GoToMenu(transform.parent.gameObject);
- },1);
- }
- }
- }
- //清除账号密码
- public void CleanNum()
- {
- Debug.Log(_textName.text);
- _textName.text=String.Empty;
- _textPassWord.text=String.Empty;
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。