using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using System; namespace LoyalSoftSDK { public class UserManager : MonoBehaviour { private static UserManager instance; public static UserManager GetInstance() { if (instance == null) { instance = new GameObject("UserManager").AddComponent(); DontDestroyOnLoad(instance.transform); } return instance; } //当前用户 private UserData user; //存储用户 private SaveUserData saveUser; private string USER_DATA_URL; private void Awake() { USER_DATA_URL = Application.persistentDataPath + "/user.data"; // SetSaveUserData("18332142663","ssdgdfsdtydfg","12345787"); TakeOutUserByLocally(); } //存储路径 /// /// 设置当前用户 /// /// 用户ID /// 用户账号 /// 用户密码(MD5) /// 最后登录时间 /// 实名认证情况 public void setNewUser(string _userId, string _account, bool _authentication) { user = new UserData( _userId,_account,_authentication); } /// /// 获取当前用户 /// /// public UserData GetCurUser() { return user; } public void ClearCurUser() { user = null; } /// /// 存储用户 /// /// /// /// public void SetSaveUserData(string _account, string _passWord, string _lastLoginTime) { saveUser = new SaveUserData(_account, _passWord, _lastLoginTime); SaveUserToLocally(); } public SaveUserData GetSaveUser() { return saveUser; } /// /// 保存用户信息到本地 /// /// private void SaveUserToLocally() { string saveStr = ""; Dictionary userDic = new Dictionary(); userDic.Add("account", saveUser.account); userDic.Add("passWord", saveUser.passWord); userDic.Add("lastLoginTime", saveUser.lastLoginTime); saveStr = MiniJSON.Json.Serialize(userDic); using (StreamWriter sw = File.CreateText(USER_DATA_URL)) { sw.Write(saveStr); } } /// /// 从本地取出保存的用户信息 /// /// private void TakeOutUserByLocally() { if (!File.Exists(USER_DATA_URL)) { saveUser = new SaveUserData("", "", ""); } else { string userStr; using (StreamReader sr = File.OpenText(USER_DATA_URL)) { userStr = sr.ReadToEnd(); } object jsonParsed = MiniJSON.Json.Deserialize(userStr); if (jsonParsed != null) { Dictionary jsonMap = jsonParsed as Dictionary; string account = ""; string passWord = ""; string lastLoginTime = ""; if (jsonMap.ContainsKey("account")) { account = jsonMap["account"].ToString(); } if (jsonMap.ContainsKey("passWord")) { passWord = jsonMap["passWord"].ToString(); } if (jsonMap.ContainsKey("lastLoginTime")) { lastLoginTime = jsonMap["lastLoginTime"].ToString(); } saveUser = new SaveUserData(account, passWord, lastLoginTime); } } } //public void NetRequest(string url, string packet, Action callback) //{ // StartCoroutine(IENetRequest(url, packet, callback)); //} /// /// 网络请求(就一个协成方法不再单独写了) /// /// public IEnumerator NetRequest(string url, string packet, Action callback) { UIFormManager.GetInstance().ShowUIForm("LoadingPanel",null,null); WWW www = null; DateTime maxTs = DateTime.Now.AddSeconds(25); byte[] bytedata = System.Text.Encoding.UTF8.GetBytes(packet); www = new WWW(url, bytedata); if (null == www || www.error != null) { callback("err","wwwerror@:@" + www.error); UIFormManager.GetInstance().CloseUIForm("LoadingPanel"); yield break; } // 超时检测 while (false == www.isDone) { TimeSpan span = DateTime.Now - maxTs; if (span.TotalMilliseconds < 0) { yield return null; } else { Debug.LogError("超时"); callback("err","timeout@:@网络超时"); UIFormManager.GetInstance().CloseUIForm("LoadingPanel"); yield break; } } // 网络错误检测 if (www.error != null || www.text == null) { // Debug.Log("www error:" + www.error); callback("err","wwwerror@:@" + www.error); UIFormManager.GetInstance().CloseUIForm("LoadingPanel"); yield break; } callback("succees", www.text); UIFormManager.GetInstance().CloseUIForm("LoadingPanel"); } } }