using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using DG.Tweening; using ZXK.UTility; /******************************************************************************* *Create By CG *Function 工具集面板管理 *******************************************************************************/ namespace ZXK.ZPS { public class UIToolPanelCtrl : MonoBehaviour { [SerializeField] private Button _submitBtn = null; [SerializeField] private Transform _toolContainerTran = null; [SerializeField] private Transform _toolTempContainerTran = null; [SerializeField] private Transform _toolSelectContainerTran = null; [SerializeField] private Toggle _showHideTog = null; [SerializeField] private GameObject _toolItemPrefab = null; [SerializeField] private List _toolImg = null; private RectTransform _curTranRect = null; private List _tools = new List(); private List _selectTools = new List(); //锁定工具 private string[] _lockTools = null; public static UIToolPanelCtrl _Instance; //静态类 private void Awake() { _Instance = this; } //一级目录切换 调用方法 public void switchstep() { foreach (Transform item in _toolSelectContainerTran) { item.GetComponent().SetDefault(); } _selectTools.Clear(); CloseTool(); } public void CreateToolItem(List tools) { _curTranRect = transform.GetComponent(); _submitBtn.onClick.AddListener(() => { //提交的时候遍历选中了哪些工具 List _selectTool = new List(); foreach (Transform item in _toolSelectContainerTran) { if (!_selectTool.Contains(item.name)) { _selectTool.Add(item.name); } } if (_selectTool.Count == 0) return; bool submitTemp = false; if (GameRoot.Instance._CurModel == EnumCtrl.Model.Train) { submitTemp = GameRoot.Instance._TrainMng.ToolSubmitBtn(_selectTool); } else if (GameRoot.Instance._CurModel == EnumCtrl.Model.Exam) { submitTemp = GameRoot.Instance._ExamMng.ToolSubmitBtn(_selectTool); } if (submitTemp) { UIToolItemCtrl[] children = _toolSelectContainerTran.GetComponentsInChildren(); for (int i = 0; i < children.Length; i++) { children[i].SetDefault(); } CloseTool(); } }); _showHideTog.onValueChanged.AddListener((isOn) => { if (GameRoot.Instance._CurModel == EnumCtrl.Model.Train) { GameRoot.Instance._TrainMng._ToolOpenState = isOn; } else if(GameRoot.Instance._CurModel == EnumCtrl.Model.Exam) { GameRoot.Instance._ExamMng._ToolOpenState = isOn; } if (isOn) { OpenToolTog(); } else { CloseToolTog(); } }); _showHideTog.isOn = false; string temp = ""; for (int i = 0; i < tools.Count; i++) { temp += tools[i] + '_'; GameObject toolItemGeo = Instantiate(_toolItemPrefab, _toolContainerTran); UIToolItemCtrl toolItemCtrl = toolItemGeo.GetComponent(); //利用读取图片的方式 Sprite curImg = null; for (int a = 0; a < _toolImg.Count; a++) { if (_toolImg[a].name.Equals(tools[i])) { curImg = _toolImg[a]; } } toolItemCtrl.InitToolItem(tools[i],curImg, _toolContainerTran, _toolTempContainerTran, _toolSelectContainerTran); _tools.Add(toolItemCtrl); } Debug.Log(temp); } public void OpenTool(string[] tools =null) { _lockTools = tools; _showHideTog.isOn = true; } /// /// 是否允许点击提交按钮 /// /// public void AllowSubminTool(bool allow) { _submitBtn.interactable = allow; } public void CloseTool() { AllowSubminTool(false); _showHideTog.isOn = false; } /// /// 打开工具箱 /// /// 是否需要锁定工具,如果有请填入数据,否则没有 private void OpenToolTog() { _curTranRect.DOAnchorPosX(-290, 0.5f); foreach (UIToolItemCtrl item in _tools) { item.SetLight(false); } if (_lockTools == null) return; for (int i = 0; i < _lockTools.Length; i++) { foreach (UIToolItemCtrl item in _tools) { if (item.name.Equals(_lockTools[i])) { item.SetLight(true); break; } } } } private void CloseToolTog() { _curTranRect.DOAnchorPosX(-22, 0.5f); } /// /// 获取选择的道具 /// /// public List GetSelectTool() { _selectTools.Clear(); foreach (Transform item in _toolSelectContainerTran) { _selectTools.Add(item.name); } return _selectTools; } } }