using System.Collections; using System.Collections.Generic; using System.IO; using System.Runtime.CompilerServices; using System.Threading; using System.Xml.Serialization; using LitJson; using UnityEngine; using UnityEngine.Networking; public class GameDataMgr:SingletonAutoMono { //静态变量 不要在外面去new private RegisterData registerData; //公共属性 方便外面获取,外面只能获取,不能修改 public RegisterData RegisterData => registerData; //玩家属性 public PlayerData player; //玩家装备信息(已穿戴和拥有的装备信息) public UserEquipInfo userEquip; //玩家物品信息 public UserGoodsInfo userGoods; //怪物数据,固定属性 private List monster; public List monsters => monster; //玩家升级属性加成,固定属性 private List userUpGrade; public List userUpGradeInfo => userUpGrade; //装备属性加成,固定属性 private List equipData; public List equipInfo => equipData; //玩家物品 private List goodsData; public List goods => goodsData; //当前怪物时哪一只 public MonsterData nowMonster; //public void Init() //{ // //读取注册数据 // registerData = JsonMgr.Instance.LoadData("RegisterData"); // //获取怪物数据 // monster = JsonMgr.Instance.LoadData>("MonsterInfo"); // //读取玩家升级属性加成 // userUpGrade = JsonMgr.Instance.LoadData>("UserUpgradeInfo"); // //读取玩家装备属性加成 // equipData = JsonMgr.Instance.LoadData>("EquipInfo"); // //读取物品信息 // goodsData = JsonMgr.Instance.LoadData>("GoodsInfo"); // nowMonster = monsters[0]; //} public void Init() { //读取注册数据 registerData = JsonMgr.Instance.LoadData("RegisterData"); //获取怪物数据 StartCoroutine(DataInit>("MonsterInfo")); //读取玩家升级属性加成 StartCoroutine(DataInit>("UserUpgradeInfo")); //读取玩家装备属性加成 StartCoroutine(DataInit>( "EquipInfo")); //读取物品信息 StartCoroutine(DataInit>("GoodsInfo")); } private IEnumerator DataInit(string name) { string path = Application.streamingAssetsPath + "/" + name + ".json"; // 安卓平台需要用UnityWebRequest UnityWebRequest req = UnityWebRequest.Get(path); yield return req.SendWebRequest(); if (req.result == UnityWebRequest.Result.Success) { string jsonStr = req.downloadHandler.text; T data = JsonMapper.ToObject(jsonStr); Debug.Log("读取成功:" + jsonStr); if (data is List) { monster = data as List; nowMonster = monster[0]; } if (data is List) { userUpGrade = data as List; } if (data is List) { equipData = data as List; } if (data is List) { goodsData = data as List; } } else { Debug.LogError("读取失败:" + req.error+path); } } /// /// 读取本地玩家数据 /// public void PlayerDataLoad(string txtUser) { player = JsonMgr.Instance.LoadData(txtUser); userEquip = JsonMgr.Instance.LoadData(txtUser + "equip"); userGoods = JsonMgr.Instance.LoadData(txtUser + "goods"); } /// /// 保存玩家数据到本地 /// /// public void PlayerDataSave() { JsonMgr.Instance.SaveData(player,player.txtUser); } /// /// 保存玩家装备数据到本地 /// /// public void EquipDataSave() { JsonMgr.Instance.SaveData(userEquip, player.txtUser+ "equip"); } #region 注册 //存储注册数据 public void SavaRegisterData() { JsonMgr.Instance.SaveData(registerData, "RegisterData"); } //注册方法 public int RegisterUser(string userName, string passWord, string gameName) { //判断是否已经存在用户 if (registerData.registerInfo.ContainsKey(userName)) { return 1; } //判断角色名是否存在 if (registerData.registerInfo.ContainsKey(gameName)) { return 2; } //如果不存在 证明可以注册 //存储新用户名和密码 存储角色名 registerData.registerInfo.Add(userName, passWord); registerData.registerInfo.Add(gameName, passWord); //初始化玩家的数据,保存在本地 PlayerData newPlayer = new PlayerData(); newPlayer.name = gameName; newPlayer.txtUser = userName; JsonMgr.Instance.SaveData(newPlayer, userName); //初始化玩家的装备信息,保存在本地 UserEquipInfo newEquipInfo=new UserEquipInfo(); newEquipInfo.itemEquip.Add(equipData[0]); newEquipInfo.itemEquip.Add(equipData[1]); newEquipInfo.itemEquip.Add(equipData[2]); newEquipInfo.itemEquip.Add(equipData[3]); newEquipInfo.itemEquip.Add(equipData[4]); newEquipInfo.itemEquip.Add(equipData[5]); newEquipInfo.itemEquip.Add(equipData[6]); newEquipInfo.itemEquip.Add(equipData[7]); newEquipInfo.itemEquip.Add(equipData[8]); JsonMgr.Instance.SaveData(newEquipInfo, userName+"equip"); //初始化玩家的物品信息,保存本地 UserGoodsInfo newGoodsInfo = new UserGoodsInfo(); newGoodsInfo.goods.Add(goodsData[0]); newGoodsInfo.goods[0].num = 1888; newGoodsInfo.goods.Add(goodsData[1]); newGoodsInfo.goods[1].num = 9999; JsonMgr.Instance.SaveData(newGoodsInfo, userName + "goods"); //本地存储 SavaRegisterData(); //注册成功 return 3; } //验证用户名密码是否合法 public bool CheckInfo(string userName, string passWord) { if (registerData.registerInfo.ContainsKey(userName)) { //密码相同 证明 登录成功 if (registerData.registerInfo[userName] == passWord) { return true; } } //用户名和密码不合法 return false; } #endregion }