修复bug

This commit is contained in:
YangHua 2024-09-08 00:13:02 +08:00
parent 6ccdb07928
commit a0b04f7e3b
19 changed files with 203 additions and 108 deletions

View File

@ -3077,6 +3077,7 @@ MonoBehaviour:
animatorParameters:
target: {fileID: 1501092963}
minDistance: 2
isClose: 0
--- !u!136 &890581131
CapsuleCollider:
m_ObjectHideFlags: 0
@ -4753,6 +4754,7 @@ MonoBehaviour:
animatorParameters: NPCState
target: {fileID: 1501092963}
minDistance: 2
isClose: 0
--- !u!4 &1198127457
Transform:
m_ObjectHideFlags: 0
@ -6310,6 +6312,7 @@ MonoBehaviour:
spawnToolPos: {fileID: 1927580343}
tMDTips: {fileID: 1180096483}
triggerName: "\u6536\u56DE\u5DE5\u5177"
npcCustomController: {fileID: 890581130}
device_Control: {fileID: 1723332379}
--- !u!4 &2109812127
Transform:

View File

@ -52,20 +52,24 @@ public class StepState_1002 : StepState
{
//查看任务单
OfficeManager.Instance.mobileController.downIndex = 0;
PacksackBagMgr.Instance.ClearAllData();
}
else if (num == 2)
{
//工作预约
OfficeManager.Instance.mobileController.downIndex = 1;
PacksackBagMgr.Instance.ClearAllData();
}
else if (num == 3)
{
//办理工作票
OfficeManager.Instance.mobileController.downIndex = 2;
PacksackBagMgr.Instance.ClearAllData();
}
else if (num == 4)
{
//填写装拆工单
PacksackBagMgr.Instance.ClearAllData();
}
else if (num == 5)
{
@ -74,7 +78,7 @@ public class StepState_1002 : StepState
//清空背包
PacksackBagMgr.Instance.ClearAllToolAndDiveceAndMaterial();
TooRoomMannger.Instance.CheckWearByWearDic();
//完成第一步点击去工具间
if (num == lastNum)
{

View File

@ -173,7 +173,7 @@ public class GameManager : SingletonAutoMono<GameManager>
});
}
/// <summary>
///返回模式选择界面
///首次加载和返回模式选择界面
/// </summary>
/// <param name="isReset"></param>
public void ShowUIPanelAndLoadScene(bool isReset = false)
@ -196,7 +196,7 @@ public class GameManager : SingletonAutoMono<GameManager>
}
/// <summary>
/// 练习
/// 练习,重新练习会调用
/// </summary>
public void Practice()
{
@ -206,11 +206,6 @@ public class GameManager : SingletonAutoMono<GameManager>
ProcessMgr.Init(RunModelMgr.schemeID, RunModelMgr.ModeType);
UIMgr.ShowPanel<UI_LoadingPanel>(E_UI_Layer.System, (panel) =>
{
UIMgr.ShowPanel<UI_MainTitlePanel>(E_UI_Layer.Bot, (panel) =>
{
panel.Init();
});
panel.Init();
EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.1f);
ScenesMgr.LoadSceneAsyn($"{systemId}_{RunModelMgr.schemeID}_03_OfficeScene", () =>
@ -235,8 +230,10 @@ public class GameManager : SingletonAutoMono<GameManager>
UIMgr.HidePanel<UI_TaskListPanel>();
if (UIMgr.GetPanel<UI_MenuBar>())
UIMgr.HidePanel<UI_MenuBar>();
UIMgr.GetPanel<UI_MainTitlePanel>().ResetByModeType();
PacksackBagMgr.ClearAllData();
EventMgr.Clear();
UIMgr.GetPanel<UI_MainTitlePanel>().ShowMe();
ScoreManager.instance.ReInit();
RunModelMgr.startTime = DateTime.Now;
Debug.Log("重置开始时间");

View File

@ -12,6 +12,7 @@ public class LiveSceneManager : SingletonMono<LiveSceneManager>
public Transform spawnToolPos;
public Transform tMDTips;
public string triggerName;
public NPCController npcCustomController;
//场景中设备控制脚本
public Device_Control device_Control;
@ -38,6 +39,7 @@ public class LiveSceneManager : SingletonMono<LiveSceneManager>
public void SetSpawnToolInfo(GameObject tool)
{
if (tool == null) return;
currentTool = tool;
currentTool.transform.parent = Camera.main.transform;
currentTool.transform.localPosition = spawnToolPos.localPosition;
@ -57,12 +59,6 @@ public class LiveSceneManager : SingletonMono<LiveSceneManager>
if (currentTool.GetComponent<Device_Base>())
{
currentTool.GetComponent<Device_Base>().SetHeadPosAndEulerang(currentTool.transform.localPosition, currentTool.transform.localEulerAngles);
currentTool.GetComponent<Device_Base>().AddStartAction(() =>
{
});
currentTool.GetComponent<Device_Base>().AddEndAction(() =>
{
});
}
tMDTips.gameObject.SetActive(true);
if (currentTool.name.Equals("工作证"))

View File

@ -158,7 +158,7 @@ public class ProcessManager : BaseManager<ProcessManager>
{
Debug.Log($"<color=red>完成所有</color>");
//HQB 20240828完成后展示学习完成Tips
GameManager.UIMgr.ShowPanel<UI_TipsForPracticePanel>(E_UI_Layer.System);
GameManager.UIMgr.ShowPanel<UI_TipsForPracticePanel>(E_UI_Layer.Mid);
return 0;
}

View File

@ -30,7 +30,31 @@ public class TooRoomMannger : SingletonMono<TooRoomMannger>
tmd.GetInfo();
}
RemoveRepeat();
CheckWearByWearDic();
}
/// <summary>
/// 通过wearDic数据检测是否穿衣
/// </summary>
public void CheckWearByWearDic()
{
var wearData = GameManager.PacksackBagMgr.wearDic;
if (wearData.Count > 0)
{
foreach (var item in wearData)
{
Wear(item.Key, true);
}
}
else
{
Wear("国网安全帽", false);
Wear("工作服", false);
Wear("绝缘手套", false);
Wear("绝缘靴", false);
}
}
public void SwitchFirstPersonControllerMove(bool isMove)
{
firstPersonController.playerCanMove = isMove;
@ -92,6 +116,14 @@ public class TooRoomMannger : SingletonMono<TooRoomMannger>
}
}
//public void ResetManWear()
//{
// headSlot.GetComponent<SkinnedMeshRenderer>().material = _cancel.SingleOrDefault(s => s.name == "国网安全帽");
// bodySlot.GetComponent<SkinnedMeshRenderer>().material = _cancel.SingleOrDefault(s => s.name == "工作服");
// handSlot.GetComponent<SkinnedMeshRenderer>().material = _cancel.SingleOrDefault(s => s.name == "绝缘手套");
// shoesSlot.GetComponent<MeshRenderer>().material = _cancel.SingleOrDefault(s => s.name == "绝缘靴");
//}
private void OnDestroy()
{
GameManager.EventMgr.RemoveEventListener<bool>(Enum_EventType.PlayerCanMove, SwitchFirstPersonControllerMove);

View File

@ -24,6 +24,7 @@ public class MirrorController : PermanentTriggerBase
if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID(triggerName, true) == 0)
{
GameManager.UIMgr.ShowPanel<UI_CheckMyselfPanel>(E_UI_Layer.Mid);
_highlight.SetHighlighted(false);
}
}

View File

@ -15,7 +15,7 @@ public class NPCController : PermanentTriggerBase
/// <summary>
/// 是否靠近
/// </summary>
private bool isClose = false;
public bool isClose = false;
private void Update()
{

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using System;
public class UI_SubProcessItem : BaseItem
{
@ -10,6 +11,7 @@ public class UI_SubProcessItem : BaseItem
public int subProcessID;
public int subProcessStepID;
public string warnnigTips;
private Action cancelCallback;
public void Init(D_SubProcess d_SubProcess, int subProcessID)
{
@ -41,17 +43,20 @@ public class UI_SubProcessItem : BaseItem
GetControl<Image>("learningTips").gameObject.SetActive(false);
}
/// <summary>
///
/// 根据传进来得状态去切换重新学习或者切换步骤
/// </summary>
/// <param name="isReset"></param>
/// <param name="isReset">true 是否重新学习 ,false 当前步骤还没有学完,确定要切换吗?</param>
/// <param name="state">0 未完成所有步骤跳转1 完成所有步骤跳转</param>
public void OnResetClick(bool isReset, int state)
/// cancelCallback :当完成所有得步骤之后,在弹出得界面上选择重新学习之后,弹出确认框,如果选择取消就需要该方法第三个参数入参
public void OnResetClick(bool isReset, int state, Action _cancelCallback = null)
{
warnnigTips = isReset ? "是否重新学习?" : "当前步骤还没有学完,确定要切换吗?";
if (state == 0)
OnClick("subProcessBtn");
else
CheckSubProcess();
if (_cancelCallback != null)
cancelCallback += _cancelCallback;
}
protected override void OnClick(string btnName)
{
@ -68,6 +73,9 @@ public class UI_SubProcessItem : BaseItem
break;
}
}
/// <summary>
/// 是否重置学习或者跳步骤
/// </summary>
private void CheckSubProcess()
{
GameManager.UIMgr.ShowPanel<UI_MessagePanel>(E_UI_Layer.System, (p) =>
@ -81,6 +89,9 @@ public class UI_SubProcessItem : BaseItem
GameManager.EventMgr.EventTrigger<int>(Enum_EventType.SwitchSubProcess, subProcessID);
//通知物体高亮
GameManager.EventMgr.EventTrigger<string>(Enum_EventType.SwitchSubProcessStepTriggerID, ProcessManager.Instance.subProcessStepTriggerID);
}, () =>
{
cancelCallback?.Invoke();
});
});
}

View File

@ -64,6 +64,18 @@ public class UI_ToolOrMaterialsOrDeviceItem : BaseItem
break;
case "iconBtn":
bool isWorkCard = currentItem.toolName.Equals("¹¤×÷Ö¤") ? false : true;
if (GameManager.RunModelMgr.ModeType != E_ModeType.Study)
{
if (currentItem.toolName.Equals("工作证") && !LiveSceneManager.Instance.npcCustomController.isClose)
{
GameManager.UIMgr.ShowPanel<UI_MiddleTipPanel>(E_UI_Layer.System, (p) =>
{
p.Init($"提示:请靠近交互对象");
});
GameManager.EventMgr.EventTrigger<GameObject>(Enum_EventType.TakeOutAndRetrievingTheTools, null);
return;
}
}
if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID(currentItem.toolName, isWorkCard) == 0)
{
GameManager.UIMgr.HidePanel<UI_ToolAndMaterialPanel>();

View File

@ -16,7 +16,7 @@ public class UI_MainTitlePanel : BasePanel
internal void Init()
{
SwitchTitleImg();
SwitchMode();
//SwitchMode();
SwitchUserName();
}
@ -27,14 +27,18 @@ public class UI_MainTitlePanel : BasePanel
public override void ShowMe()
{
GameManager.EventMgr.AddEventListener(Enum_EventType.SwitchMode, SwitchMode);
GameManager.EventMgr.AddEventListener(Enum_EventType.InitializationUI, InitializationUI);
}
/// <summary>
/// 隐藏
/// </summary>
public override void HideMe()
{
GameManager.EventMgr.RemoveEventListener(Enum_EventType.SwitchMode, SwitchMode);
GameManager.EventMgr.RemoveEventListener(Enum_EventType.InitializationUI, InitializationUI);
}
/// <summary>
@ -58,14 +62,26 @@ public class UI_MainTitlePanel : BasePanel
mode = "考试模式";
break;
}
GetControl<Button>("upExamBtn").gameObject.SetActive(mode == "考试模式");
GetControl<Button>("submitBtn").gameObject.SetActive(mode == "练习模式");
GetControl<Image>("timeText").gameObject.SetActive(mode == "考试模式");
///模式显示父物体
GetControl<Image>("modelText").gameObject.SetActive(mode != "");
//GetControl<Image>("userName").gameObject.SetActive(mode != string.Empty && mode != "学习模式");
///模式显示text
GetControl<TextMeshProUGUI>("modelText (TMP)").text = mode;
}
private void InitializationUI()
{
GetControl<Button>("upExamBtn").gameObject.SetActive(RunModelMgr.Instance.ModeType == E_ModeType.Exam);
GetControl<Button>("submitBtn").gameObject.SetActive(RunModelMgr.Instance.ModeType == E_ModeType.Practice);
//GetControl<Image>("timeText").gameObject.SetActive(RunModelMgr.Instance.ModeType == E_ModeType.Exam);
Debug.LogError(RunModelMgr.Instance.ModeType.ToString());
}
public void ResetByModeType()
{
GetControl<Button>("upExamBtn").gameObject.SetActive(false);
GetControl<Button>("submitBtn").gameObject.SetActive(false);
//GetControl<Button>("timeText").gameObject.SetActive(false);
}
@ -97,11 +113,13 @@ public class UI_MainTitlePanel : BasePanel
GameManager.UIMgr.ShowPanel<UI_MessagePanel>(E_UI_Layer.System,
(panel) =>
{
panel.Init("提示", "确定退出应用吗?", E_MessageType.Error, () =>
panel.Init("提示", "确定退出应用吗?", E_MessageType.Error,
() =>
{
Debug.Log("退出");
Application.Quit();
}, () =>
},
() =>
{
Debug.Log("取消");
});

View File

@ -73,10 +73,10 @@ public class UI_SelectDevicePanel : BasePanel
GameManager.ProcessMgr.Init(GameManager.RunModelMgr.schemeID, GameManager.RunModelMgr.ModeType);
GameManager.UIMgr.ShowPanel<UI_LoadingPanel>(E_UI_Layer.System, (panel) =>
{
GameManager.UIMgr.ShowPanel<UI_MainTitlePanel>(E_UI_Layer.Bot, (panel) =>
{
panel.Init();
});
//GameManager.UIMgr.ShowPanel<UI_MainTitlePanel>(E_UI_Layer.Bot, (panel) =>
//{
// panel.Init();
//});
panel.Init();
GameManager.EventMgr.EventTrigger<float>(Enum_EventType.UpdateProgress, 0.1f);

View File

@ -9,6 +9,10 @@ public class UI_SelectModePanel : BasePanel
/// </summary>
public void Init()
{
}
public override void ShowMe()
{
base.ShowMe();
GameManager.RunModelMgr.ModeType = E_ModeType.None;
GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchMode);
}
@ -32,6 +36,7 @@ public class UI_SelectModePanel : BasePanel
GameManager.RunModelMgr.ModeType = modeType;
GameManager.UIMgr.ShowPanel<UI_SelectDevicePanel>(E_UI_Layer.Mid, (panel) =>
{
GameManager.EventMgr.EventTrigger(Enum_EventType.SwitchMode);
panel.Init();
GameManager.UIMgr.HidePanel<UI_SelectModePanel>();//TODO 框架中设计一个SelfClose()感觉更好
});

View File

@ -74,10 +74,10 @@ public class UI_SelectWorkTicketPanel : BasePanel
GameManager.UIMgr.ShowPanel<UI_LowTensionWorkTicketPanel>(E_UI_Layer.Mid);
GameManager.UIMgr.HidePanel<UI_SelectWorkTicketPanel>();
}
else
{
GetControl<Text>("Text_True").gameObject.SetActive(true);
}
//else
//{
// GetControl<Text>("Text_True").gameObject.SetActive(true);
//}
break;
case E_ModeType.Exam:
if (GetControl<Toggle>("ImageF").isOn)
@ -86,10 +86,10 @@ public class UI_SelectWorkTicketPanel : BasePanel
GameManager.UIMgr.ShowPanel<UI_LowTensionWorkTicketPanel>(E_UI_Layer.Mid);
GameManager.UIMgr.HidePanel<UI_SelectWorkTicketPanel>();
}
else
{
GetControl<Text>("Text_True").gameObject.SetActive(true);
}
//else
//{
// GetControl<Text>("Text_True").gameObject.SetActive(true);
//}
break;
}
break;

View File

@ -4,6 +4,7 @@ using DG.Tweening;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System.Collections.Generic;
using System;
public class UI_TaskListPanel : BasePanel
{
@ -46,21 +47,34 @@ public class UI_TaskListPanel : BasePanel
}
}
/// <summary>
/// 点击第一个
/// 重置学习调用
/// </summary>
/// <param name="state">0 未完成所有步骤跳转1 完成所有步骤跳转</param>
public void ClickFirstSubProcessesItem(int state)
public void ClickFirstSubProcessesItem(int state, Action _cancelCallback = null)
{
if (_content.GetChild(0).GetComponent<UI_SubProcessItem>())
{
_content.GetChild(0).GetComponent<UI_SubProcessItem>().OnResetClick(true, state);
_content.GetChild(0).GetComponent<UI_SubProcessItem>().OnResetClick(true, state, state == 1 ? _cancelCallback : null);
return;
}
if (_content.GetChild(1).GetComponent<UI_SubProcessItem>())
{
_content.GetChild(1).GetComponent<UI_SubProcessItem>().OnResetClick(true, state);
_content.GetChild(1).GetComponent<UI_SubProcessItem>().OnResetClick(true, state, state == 1 ? _cancelCallback : null);
}
}
/// <summary>
/// 重置练习调用
/// </summary>
public void ResetPractice()
{
GameManager.UIMgr.ShowPanel<UI_MessagePanel>(E_UI_Layer.System, (p) =>
{
p.Init("提示", "是否重新学习?", E_MessageType.Error, () =>
{
GameManager.Instance.Practice();
});
});
}
protected override void OnClick(string btnName)
{
@ -74,7 +88,7 @@ public class UI_TaskListPanel : BasePanel
ClickFirstSubProcessesItem(0);
break;
case "RePracticeBtn":
GameManager.Instance.Practice();
ResetPractice();
break;
default:
break;

View File

@ -15,6 +15,7 @@ public class UI_TipsForPracticePanel : BasePanel
}
protected override void OnClick(string btnName)
{
GameManager.UIMgr.HidePanel<UI_TipsForPracticePanel>();
switch (btnName)
{
case "StartPractice":
@ -23,7 +24,10 @@ public class UI_TipsForPracticePanel : BasePanel
case "ResetStudy":
if (GameManager.UIMgr.GetPanel<UI_TaskListPanel>())
{
GameManager.UIMgr.GetPanel<UI_TaskListPanel>().ClickFirstSubProcessesItem(1);
GameManager.UIMgr.GetPanel<UI_TaskListPanel>().ClickFirstSubProcessesItem(1, () =>
{
GameManager.UIMgr.ShowPanel<UI_TipsForPracticePanel>(E_UI_Layer.System);
});
}
break;
case "BackBtn":
@ -32,6 +36,5 @@ public class UI_TipsForPracticePanel : BasePanel
default:
break;
}
GameManager.UIMgr.HidePanel<UI_TipsForPracticePanel>();
}
}

View File

@ -277,4 +277,24 @@ public class EventCenter : BaseManager<EventCenter>
eventDic.Clear();
eventEnumDic.Clear();
}
/// <summary>
/// 清除报空事件监听
/// </summary>
public void ClearNull()
{
foreach (var eventName in eventDic.Keys)
{
if (string.IsNullOrEmpty(eventName) || eventName == null)
{
eventDic.Remove(eventName);
}
}
foreach (var eventName in eventEnumDic.Keys)
{
if (string.IsNullOrEmpty(eventName.ToString()) || eventName.ToString() == null)
{
eventEnumDic.Remove(eventName);
}
}
}
}

View File

@ -7,13 +7,13 @@
"index": 1,
"subProcessId": 1,
"currentScore": 0.0,
"isDone": true
"isDone": false
},
{
"index": 2,
"subProcessId": 2,
"currentScore": 0.0,
"isDone": true
"isDone": false
},
{
"index": 3,
@ -112,31 +112,10 @@
"isDone": false
}
],
"experiencedScene": [
"02_MenuScene",
"03_OfficeScene"
],
"allToolAndMaterial": [],
"allWear": [],
"sceneName": "03_OfficeScene",
"sceneName": "02_MenuScene",
"currentSceneTools": [],
"currentSceneTriggers": [
{
"triggerID": 5005,
"triggerName": "手机",
"selfPosInScene": {
"x": 0.0244421959,
"y": 0.885706842,
"z": -1.00569367
},
"selfRotInScene": {
"x": 0.0,
"y": 0.0,
"z": 0.0
},
"triggerInfo": "{\"downIndex\":\"2\",\"triggerID\":\"5005\",\"triggerName\":\"\\u624B\\u673A\"}"
}
],
"currentSceneOtherInfo": "{\r\n \"TestPen3list\": [],\r\n \"InSwitchCloseYDList\": [],\r\n \"InSwitchOpenYDList\": [],\r\n \"currentunInstallJieXian\": [],\r\n \"currentInstallJieXian\": [],\r\n \"installCover\": [],\r\n \"currentInstallTestJieXian\": []\r\n}",
"experiencedScenes": []
"currentSceneTriggers": [],
"currentSceneOtherInfo": "{\r\n \"TestPen3list\": [],\r\n \"InSwitchCloseYDList\": [],\r\n \"InSwitchOpenYDList\": [],\r\n \"currentunInstallJieXian\": [],\r\n \"currentInstallJieXian\": [],\r\n \"installCover\": [],\r\n \"currentInstallTestJieXian\": []\r\n}"
}