using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Networking; /// /// 断线 /// public class Disconnected : MonoBehaviour { public static Disconnected ins; [SerializeField] int Timer; public string fileName; public DisconnectedData DisconnectedData; [SerializeField] Transform PlayerTrans; [SerializeField] string name; private void Awake() { //if (ins == null) //{ // ins = this; //} //else //{ // Destroy(ins); // return; //} //try //{ // PlayerTrans = GameManager.Instance.Player.transform; DisconnectedData = new DisconnectedData(); DisconnectedData.PlayerPosition = new pos(); DisconnectedData.PlayerRotions = new pos(); DisconnectedData.toolsName = new List(); DisconnectedData.keyValuePairs = new Dictionary(); DateTime currentTime = DateTime.Now; // fileName = Application.streamingAssetsPath + "/" + currentTime.Year.ToString() + currentTime.Month.ToString() + currentTime.Day.ToString() + ".json"; // StartCoroutine(LoadJSON(fileName)); //} //catch (Exception ex) //{ // Debug.LogError(ex.Message); // throw; //} } // Start is called before the first frame update void Start() { //try //{ // StartCoroutine(Starts()); //} //catch (System.Exception ex) //{ // Debug.LogError("异常" + ex); // throw; //} } private void OnTriggerEnter(Collider other) { if (other.name.Equals(name)) { //OnBackUp(); } } private void OnTriggerExit(Collider other) { if (other.name.Equals(name)) { //UIManager.Instance.Reconnection.isDuanDianok = true; } } void OnBackUp() { //Debug.Log("开始备份"); DisconnectedData.toolsPos = new List(); DisconnectedData.toolsRot = new List(); int tempInt = UIManager.Instance.toolsItemManager.toolItems.Count; for (int i = 0; i < tempInt; i++) { pos pos = new pos(); pos.x = ToolsItemManager.Instance.toolItems[i].originPos.x; pos.y = ToolsItemManager.Instance.toolItems[i].originPos.y; pos.z = ToolsItemManager.Instance.toolItems[i].originPos.z; DisconnectedData.toolsPos.Add(pos); } for (int i = 0; i < tempInt; i++) { pos pos = new pos(); pos.x = ToolsItemManager.Instance.toolItems[i].originAngle.x; pos.y = ToolsItemManager.Instance.toolItems[i].originAngle.y; pos.z = ToolsItemManager.Instance.toolItems[i].originAngle.z; DisconnectedData.toolsRot.Add(pos); } DisconnectedData.PlayerPosition.x = PlayerTrans.position.x; DisconnectedData.PlayerPosition.y = PlayerTrans.position.y; DisconnectedData.PlayerPosition.z = PlayerTrans.position.z; DisconnectedData.PlayerRotions.x = PlayerTrans.localEulerAngles.x; DisconnectedData.PlayerRotions.y = PlayerTrans.localEulerAngles.y; DisconnectedData.PlayerRotions.z = PlayerTrans.localEulerAngles.z; DisconnectedData.SceneName = GameManager.Instance.SceneName; DisconnectedData.UserID = UIManager.Instance.loginController.PassWord; DisconnectedData.UserName = UIManager.Instance.loginController.userName; DisconnectedData.userBianHao = GlobalFlag.userId; DisconnectedData.toolsName = new List(); DisconnectedData.timuAnd = new timuAndOptoin(); DisconnectedData.timuAnd = UIManager.Instance.jobCardController.hide(); DisconnectedData.Timer = UIManager.Instance.time.countTime; foreach (var item in WorkingPersonnel.instance.keyValuePairs) { if (DisconnectedData.keyValuePairs.ContainsKey(item.Key)) { DisconnectedData.keyValuePairs[item.Key] = item.Value; } else { DisconnectedData.keyValuePairs.Add(item.Key, item.Value); } } if (ToolsItemManager.Instance.currentTool) { DisconnectedData.HandGameObject = ToolsItemManager.Instance.currentTool.name; } for (int i = 0; i < ToolsItemManager.Instance.toolItems.Count; i++) { DisconnectedData.toolsName.Add(ToolsItemManager.Instance.toolItems[i].toolName); } WriteToLocal(DisconnectedData.UserID, DisconnectedData.UserName, DisconnectedData); gameObject.GetComponent().enabled = false; } public void WriteToLocal(string id, string name, T monoBehaviour) { // 将数据对象序列化为JSON string json = JsonConvert.SerializeObject(monoBehaviour, Formatting.Indented); //File.WriteAllText(path, json); ExaminationLoad load = new ExaminationLoad(); StartCoroutine(load.LoadAsyncPost(name, id, json)); } IEnumerator LoadJSON(string fileName) { string sPath = fileName; using (UnityWebRequest oReq = UnityWebRequest.Get(sPath)) { yield return oReq.SendWebRequest(); if (!string.IsNullOrEmpty(oReq.error)) { Debug.Log("获取配置信息失败!"); yield break; } string json = oReq.downloadHandler.text; DisconnectedData settings = JsonConvert.DeserializeObject(json); } } } [Serializable] public class DisconnectedData { /// /// 用户名称 /// public string UserName; /// /// 用户身份证 /// public string UserID; /// /// 用户编号 /// public string userBianHao; /// /// 场景名称 /// public string SceneName; /// /// 当前玩家位置 /// public pos PlayerPosition; /// /// 当前玩家位置 /// public pos PlayerRotions; /// /// 玩家手上工具 /// public string HandGameObject; /// /// 工具集合 /// public List toolsName; /// /// 工具位置 /// public List toolsPos; /// /// 工具旋转 /// public List toolsRot; /// /// 当前是否要出现感叹号 /// public Dictionary keyValuePairs; public timuAndOptoin timuAnd; public float Timer;//时间 } [Serializable] public class pos { public float x; public float y; public float z; } [Serializable] public class timuAndOptoin { public string userSum; /// /// 字典 /// public Dictionary keyValuePairs; /// /// 用户编号 /// public List userID; /// /// 客户名称 /// public List userName; /// /// 工作地点 /// public List workSpace; /// /// 注意事项及安全措施 /// public List aqcss; /// /// 现场风险点分析 /// public List fxdfx; /// /// 打钩框 /// public List bools; }