diff --git a/Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs b/Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs
new file mode 100644
index 0000000..8de9982
--- /dev/null
+++ b/Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs
@@ -0,0 +1,27 @@
+///
+/// 保存用户考试状态
+///
+
+public class TB_UserExamStat
+{
+ ///
+ ///当前方案ID
+ ///
+ public int schemeID = -1;
+
+ ///
+ /// 当前流程Id
+ ///
+ public int processId = -1;
+
+ ///
+ /// 当前子流程Id
+ ///
+ public int subProcessId = -1;
+
+ ///
+ /// 当前子流程步骤Id
+ ///
+ public int subProcessStepId = -1;
+
+}
diff --git a/Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs.meta b/Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs.meta
new file mode 100644
index 0000000..50d6cb8
--- /dev/null
+++ b/Assets/Scripts/ExcelData/DataContainer/TB_UserExamStat.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2e7cebc125e92494faf01d8936568a90
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Project/Manager/DataManager.cs b/Assets/Scripts/Project/Manager/DataManager.cs
index 4b94790..ebeeb42 100644
--- a/Assets/Scripts/Project/Manager/DataManager.cs
+++ b/Assets/Scripts/Project/Manager/DataManager.cs
@@ -170,6 +170,7 @@ public class DataManager : BaseManager
D_SubProcessStep operation = new D_SubProcessStep();
operation.processId = process.id;
operation.schemeId = subject.id;
+ operation.subProcessId = step.id;
operation.subProcessStepName = operationNode.Attributes["subProcessStepName"].Value;
operation.triggerID = operationNode.Attributes["triggerID"].Value;
operation.tipTitle = operationNode.Attributes["tipTitle"].Value;
diff --git a/Assets/Scripts/Project/Manager/GameManager.cs b/Assets/Scripts/Project/Manager/GameManager.cs
index 4979dbb..bc69488 100644
--- a/Assets/Scripts/Project/Manager/GameManager.cs
+++ b/Assets/Scripts/Project/Manager/GameManager.cs
@@ -97,6 +97,11 @@ public class GameManager : SingletonAutoMono
///
public static ToolAndmaterialMgr ToolAndmaterialMgr { get; private set; }
+ ///
+ /// 鏁版嵁閲嶈繛绠$悊绫
+ ///
+ public static ReconnectMgr ReconnectMgr { get; private set; }
+
#endregion
///
@@ -121,6 +126,7 @@ public class GameManager : SingletonAutoMono
RunModelMgr = RunModelMgr.Instance;
ToolAndmaterialMgr = ToolAndmaterialMgr.Instance;
PacksackBagMgr = PacksackBagMgr.Instance;
+ //ReconnectMgr = ReconnectMgr.Instance;//閲嶈繛绠$悊鍒濆鍖
DataMgr.Init();
InitData();
diff --git a/Assets/Scripts/Project/Manager/ReconnectMgr.cs b/Assets/Scripts/Project/Manager/ReconnectMgr.cs
new file mode 100644
index 0000000..e18100f
--- /dev/null
+++ b/Assets/Scripts/Project/Manager/ReconnectMgr.cs
@@ -0,0 +1,106 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System.IO;
+using LitJson;
+
+///
+/// 断线重连管理
+///
+public class ReconnectMgr : SingletonMono
+{
+ [HideInInspector]
+ public float recordDuration = -1;
+ private float recordCountdown = -1;
+ private TB_UserExamStat UserExamStat = new TB_UserExamStat();
+ private string localStatPath = "";
+ private string localStatFileName = "realtimeStat.json";
+ ///
+ /// 初始化函数,记录时间间隔
+ ///
+ public void Init( )
+ {
+ localStatPath = Application.streamingAssetsPath + "/" + localStatFileName;
+ //if (File.Exists( localStatPath ))//启动后检查有没有之前的遗留
+ //{
+ // File.Delete( localStatPath );
+ //}
+ }
+
+ ReconnectMgr()//构造函数
+ {
+ Init( );
+ }
+
+ ///
+ /// 记录用户状态
+ ///
+ public void RealtimeStatWriter()
+ {
+ //记录步骤相关各项信息
+ UserExamStat.schemeID = ProcessManager.Instance.schemeID;
+ UserExamStat.processId = ProcessManager.Instance.processId;
+ UserExamStat.subProcessId = ProcessManager.Instance.subProcessId;
+ UserExamStat.subProcessStepId = ProcessManager.Instance.subProcessStepId;
+
+ string UserJson = JsonConvert.SerializeObject(UserExamStat, Formatting.Indented);
+ Debug.Log("用户当前状态" + UserJson);
+
+ File.WriteAllText(localStatPath, UserJson);
+ }
+
+ ///
+ /// 读取用户状态(先使用同步,后用异步)
+ ///
+ public bool RealtimeStatReader()
+ {
+ if (File.Exists(localStatPath))
+ {
+ try
+ {
+ StreamReader sr = new StreamReader(localStatPath);
+ string user_last_stat = sr.ReadToEnd();
+ sr.Close();
+ UserExamStat = JsonMapper.ToObject(user_last_stat);
+ Debug.Log("用户当前schemeID:" + UserExamStat.schemeID);
+ return true;
+ }
+ catch (System.Exception e)
+ {
+ Debug.LogError(e.ToString());
+ return false;
+ }
+ }
+ else {
+ return false;
+ }
+ }
+
+ // Start is called before the first frame update
+ //void Start()
+ //{
+
+ //}
+
+ // Update is called once per frame
+ void Update()
+ {
+ if (Input.GetKeyDown(KeyCode.S))//测试用,按S读取状态保存
+ {
+ RealtimeStatWriter();
+ }
+ else if(Input.GetKeyDown(KeyCode.R))
+ {
+ RealtimeStatReader();
+
+ ProcessManager.Instance.HandoverProcess(UserExamStat.processId, UserExamStat.subProcessId, UserExamStat.subProcessStepId);
+ StepStateControl.instance.InvokeInitStepState(GameManager.Instance.systemId, GameManager.ProcessMgr.d_Scheme.id, UserExamStat.subProcessId);
+ GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchSubProcess, UserExamStat.subProcessId);
+ //Debug.LogError(ProcessManager.Instance.subProcessStepTriggerID);
+ GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID);
+ }
+ }
+}
diff --git a/Assets/Scripts/Project/Manager/ReconnectMgr.cs.meta b/Assets/Scripts/Project/Manager/ReconnectMgr.cs.meta
new file mode 100644
index 0000000..2acf645
--- /dev/null
+++ b/Assets/Scripts/Project/Manager/ReconnectMgr.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2b0607653b5fed643b96912f73248d7e
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: