还原现场触发物场景
This commit is contained in:
parent
aa02fffc38
commit
2adbebe563
|
@ -6,9 +6,20 @@ using System.Collections;
|
|||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
//用于记录现场中各项出发物品信息
|
||||
[Serializable]
|
||||
public class ReconnectTriggerInfo
|
||||
{
|
||||
public int triggerID;
|
||||
public string triggerName;
|
||||
public Vector3 selfPosInScene;
|
||||
public Vector3 selfRotInScene;
|
||||
}
|
||||
|
||||
|
||||
//用于记录场景中物品的信息
|
||||
[Serializable]
|
||||
public class ReconnetItemInfo
|
||||
public class ReconnectItemInfo
|
||||
{
|
||||
public int toolId;
|
||||
public int triggerID;
|
||||
|
@ -38,9 +49,13 @@ public class TB_UserExamStat
|
|||
/// </summary>
|
||||
public string sceneName = "";
|
||||
|
||||
/// <summary>
|
||||
/// 当前场景内的所有装备和材料
|
||||
/// </summary>
|
||||
public List<ReconnectItemInfo> currentSceneTools = new List<ReconnectItemInfo>();
|
||||
|
||||
/// <summary>
|
||||
/// 当前场景内的所有可触发物品
|
||||
/// </summary>
|
||||
public List<ReconnetItemInfo> currentSceneTools = new List<ReconnetItemInfo>();
|
||||
|
||||
public List<ReconnectTriggerInfo> currentSceneTriggers = new List<ReconnectTriggerInfo>();
|
||||
}
|
||||
|
|
|
@ -328,7 +328,7 @@ public class ProcessManager : BaseManager<ProcessManager>
|
|||
if (countDown_AutoSave <= 0)
|
||||
{
|
||||
ReconnectMgr.Instance.RealtimeStatWriter();//需要在GameManager里面初始化
|
||||
Debug.Log("完成状态自动保存");
|
||||
//Debug.Log("完成状态自动保存");
|
||||
countDown_AutoSave = time;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -76,8 +76,8 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
|
|||
BaseToolOrDevice[] allThings = FindObjectsOfType<BaseToolOrDevice>();
|
||||
foreach (BaseToolOrDevice item in allThings)
|
||||
{
|
||||
Debug.Log(item.itemInfo.toolName);
|
||||
ReconnetItemInfo rec = new ReconnetItemInfo();
|
||||
//Debug.Log(item.itemInfo.toolName);
|
||||
ReconnectItemInfo rec = new ReconnectItemInfo();
|
||||
rec.toolId = item.itemInfo.toolId;
|
||||
rec.toolName = item.itemInfo.toolName;
|
||||
rec.triggerID = item.itemInfo.triggerID;
|
||||
|
@ -87,15 +87,21 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
|
|||
}
|
||||
|
||||
//获取场景内(现场)所有可以出发的装置
|
||||
UserExamStat.currentSceneTriggers.Clear();
|
||||
PermanentTriggerBase[] allPermanentTriggers = FindObjectsOfType<PermanentTriggerBase>();
|
||||
foreach (PermanentTriggerBase item in allPermanentTriggers)
|
||||
{
|
||||
Debug.Log("场景内涉及的物品:" + item.gameObject.name);
|
||||
ReconnectTriggerInfo ret = new ReconnectTriggerInfo();
|
||||
ret.triggerName = item.triggerName;
|
||||
ret.triggerID = item.triggerID;
|
||||
ret.selfPosInScene = item.transform.localPosition;
|
||||
ret.selfRotInScene = item.transform.localEulerAngles;
|
||||
UserExamStat.currentSceneTriggers.Add(ret);
|
||||
}
|
||||
|
||||
//转换为JSON
|
||||
string UserJson = JsonConvert.SerializeObject(UserExamStat, Formatting.Indented);
|
||||
Debug.Log("用户当前状态" + UserJson);
|
||||
Debug.Log("自动保存成功");
|
||||
|
||||
File.WriteAllText(localStatPath, UserJson);
|
||||
}
|
||||
|
@ -140,13 +146,14 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
|
|||
foreach (BaseToolOrDevice item in allThings)
|
||||
{
|
||||
item.gameObject.SetActive(false);//先全部隐藏
|
||||
foreach (ReconnetItemInfo rec in UserExamStat.currentSceneTools)
|
||||
foreach (ReconnectItemInfo rec in UserExamStat.currentSceneTools)
|
||||
{
|
||||
if (item.itemInfo.toolName.Equals(rec.toolName) && item.itemInfo.toolId == rec.toolId)
|
||||
{
|
||||
if (item.itemInfo.selfPosInToolRoom.Equals(rec.selfPosInToolRoom))
|
||||
{
|
||||
item.gameObject.SetActive(true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -165,6 +172,24 @@ public class ReconnectMgr : SingletonMono<ReconnectMgr>
|
|||
{
|
||||
PacksackBagMgr.Instance.WearItemState(item, true);
|
||||
}
|
||||
|
||||
//恢复场景内各个触发器状态
|
||||
PermanentTriggerBase[] allPermanentTriggers = FindObjectsOfType<PermanentTriggerBase>();
|
||||
List<ReconnectTriggerInfo> allReconTrigs = UserExamStat.currentSceneTriggers;
|
||||
foreach (PermanentTriggerBase item in allPermanentTriggers)
|
||||
{
|
||||
item.gameObject.SetActive(false);
|
||||
foreach (ReconnectTriggerInfo ret in allReconTrigs)
|
||||
{
|
||||
if (item.triggerName == ret.triggerName)
|
||||
{
|
||||
item.gameObject.SetActive(true);
|
||||
item.transform.localPosition = ret.selfPosInScene;
|
||||
item.transform.localEulerAngles = ret.selfRotInScene;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
// Start is called before the first frame update
|
||||
|
|
Loading…
Reference in New Issue