获取场景内所有可以点击的物品

This commit is contained in:
liuyu 2024-09-03 09:38:55 +08:00
parent 254f54a708
commit 56eba812fe
3 changed files with 55 additions and 30 deletions

View File

@ -1,30 +1,27 @@
/// <summary>
/// 保存用户考试状态
/// </summary>
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//用于记录场景中物品的信息
[Serializable]
public class ReconnetItemInfo
{
public int toolId;
public int triggerID;
public string toolName;
public E_ToolOrDeviceOrMaterials toolOrDeviceOrMaterial;
public Vector3 selfPosInToolRoom;
}
public class TB_UserExamStat
{
/// <summary>
///当前方案ID
/// </summary>
public int schemeID = -1;
/// <summary>
/// 当前流程Id
/// </summary>
public int processId = -1;
/// <summary>
/// 当前子流程Id
/// </summary>
public int subProcessId = -1;
/// <summary>
/// 当前子流程步骤Id
/// </summary>
public int subProcessStepId = -1;
/*public int schemeID = -1;//当前方案ID
public int processId = -1;// 当前流程Id
public int subProcessId = -1;//当前子流程Id
public int subProcessStepId = -1;//当前子流程步骤Id*/
/// <summary>
/// 背包中所有的工具和材料
@ -36,4 +33,14 @@ public class TB_UserExamStat
/// </summary>
public List<string> allWear = new List<string>();
/// <summary>
/// 场景名称
/// </summary>
public string sceneName = "";
/// <summary>
/// 当前场景内的所有可触发物品
/// </summary>
private List<ReconnetItemInfo> currentSceneTools = new List<ReconnetItemInfo>();
}

View File

@ -79,8 +79,8 @@ public class ProcessManager : BaseManager<ProcessManager>
{
this.schemeID = id;
this.mode = mode;
//coroutine = GameManager.MonoMgr.StartCoroutine(CountDown(countDown));
coroutine = GameManager.MonoMgr.StartCoroutine(AutoSaveStat(countDown));//自动保存用户状态信息
coroutine = GameManager.MonoMgr.StartCoroutine(CountDown(countDown));
//coroutine = GameManager.MonoMgr.StartCoroutine(AutoSaveStat(countDown));//自动保存用户状态信息
d_Scheme = DataManager.Instance.GetSchemeData(id);
ReportManager.Instance.creport = DataManager.Instance.GetSchemeReport(id);
GameManager.ToolAndmaterialMgr.Init(d_Scheme.ToolOrMaterilOrDevice);

View File

@ -6,6 +6,7 @@ using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.IO;
using LitJson;
using System;
/// <summary>
/// 断线重连管理
@ -18,6 +19,7 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
private TB_UserExamStat UserExamStat = new TB_UserExamStat();
private string localStatPath = "";
private string localStatFileName = "realtimeStat.json";
/// <summary>
/// 初始化函数,记录时间间隔
/// </summary>
@ -43,10 +45,10 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
//记录步骤相关各项信息
UserExamStat.schemeID = ProcessManager.Instance.schemeID;
/*UserExamStat.schemeID = ProcessManager.Instance.schemeID;
UserExamStat.processId = ProcessManager.Instance.processId;
UserExamStat.subProcessId = ProcessManager.Instance.subProcessId;
UserExamStat.subProcessStepId = ProcessManager.Instance.subProcessStepId;
UserExamStat.subProcessStepId = ProcessManager.Instance.subProcessStepId;*/
//记录装备材料信息
UserExamStat.allToolAndMaterial.Clear();
@ -67,6 +69,24 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
UserExamStat.allWear.Add(((ItemInfo)item.Value).toolName);
}
//获取当前所加载场景的名字
UserExamStat.sceneName = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;
//获取场景内所有可以出发的物品
currentSceneTools.Clear();
BaseToolOrDevice[] allThings = FindObjectsOfType<BaseToolOrDevice>();
foreach (BaseToolOrDevice item in allThings)
{
Debug.Log(item.itemInfo.toolName);
ReconnetItemInfo rec = new ReconnetItemInfo();
rec.toolId = item.itemInfo.toolId;
rec.toolName = item.itemInfo.toolName;
rec.triggerID = item.itemInfo.triggerID;
rec.toolOrDeviceOrMaterial = item.itemInfo.toolOrDeviceOrMaterial;
rec.selfPosInToolRoom = item.itemInfo.selfPosInToolRoom;
currentSceneTools.Add(rec);
}
//转换为JSON
string UserJson = JsonConvert.SerializeObject(UserExamStat, Formatting.Indented);
Debug.Log("用户当前状态" + UserJson);
@ -86,7 +106,6 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
string user_last_stat = sr.ReadToEnd();
sr.Close();
UserExamStat = JsonMapper.ToObject<TB_UserExamStat>(user_last_stat);
Debug.Log("Óû§µ±Ç°schemeID:" + UserExamStat.schemeID);
return true;
}
catch (System.Exception e)
@ -111,19 +130,18 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
{
if (Input.GetKeyDown(KeyCode.S))//测试用,按S读取状态保存
{
//RealtimeStatWriter();
RealtimeStatWriter();
//Dictionary<string, List<ItemInfo>> tmpDic = PacksackBagMgr.Instance.GetCurrentBagData();
//Debug.Log(12);
Debug.Log("当前场景:" + UserExamStat.sceneName);
}
else if(Input.GetKeyDown(KeyCode.R))
{
RealtimeStatReader();
ProcessManager.Instance.HandoverProcess(UserExamStat.processId, UserExamStat.subProcessId, UserExamStat.subProcessStepId);
ScenesManager.Instance.LoadScene(UserExamStat.sceneName);
/*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<int>(Enum_EventType.SwitchSubProcess, UserExamStat.subProcessId);
//Debug.LogError(ProcessManager.Instance.subProcessStepTriggerID);
GameManager.EventMgr.EventTrigger<string>(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID);
GameManager.EventMgr.EventTrigger<string>(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID);*/
}
}
}