using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 计量存储柜控制脚本 /// public class CabinetController : PermanentTriggerBase { public GameObject screenCanvas;//计量存储柜显示屏 public string SubProcessStepName; public GameObject Obstacle;//遮挡物,关闭时候遮挡,防止东西被拿取 private List triggerDevives = new List(); protected override void OnMEnter() { base.OnMEnter(); if (GameManager.RunModelMgr.ModeType != E_ModeType.Study) { _highlight.SetHighlighted(true); } } protected override void OnMExit() { if (GameManager.RunModelMgr.ModeType != E_ModeType.Study) _highlight.SetHighlighted(false); base.OnMExit(); } protected override void OnMDown() { if (GameManager.RunModelMgr.ModeType == E_ModeType.Study) if (GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID(triggerName, false) == 1) return; _highlight.SetHighlighted(false); screenCanvas.SetActive(!screenCanvas.activeInHierarchy); if (screenCanvas.activeInHierarchy) { triggerDevives.Clear(); string relevantDevices = ""; foreach (var p in GameManager.ProcessMgr.d_Scheme.processes) { foreach(var sub in p.subProcesses) { foreach (var step in sub.subProcessStepes) { if (step.subProcessStepName == SubProcessStepName) { relevantDevices = step.triggerID; break; } } if (relevantDevices != "") break; } if (relevantDevices != "") break; } triggerDevives = new List(relevantDevices.Split(',')); SingleBubbleCtrl[] sbcInScene = FindObjectsOfType(); foreach (var item in sbcInScene) { if (item.targetDevice == null) item.RecoverGameObject(); if (item.targetDevice == null || item.targetDevice.GetComponent() == null) { item.BubbleInit(false); } else { int index = triggerDevives.IndexOf(item.targetDevice.name); if (index != -1) { item.BubbleInit(true); triggerDevives.RemoveAt(index); } else item.BubbleInit(false); } //foreach (var item in UsableDevices) } } GameManager.ProcessMgr.IsRightSubProcessStepsTriggerID(triggerName, true); } public void Init() { screenCanvas.SetActive(false); SingleBubbleCtrl[] sbcInScene = FindObjectsOfType(); foreach (var item in sbcInScene) item.BubbleReset(); } private void Update() { Obstacle.SetActive(!screenCanvas.activeInHierarchy); } }