using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; //============================================================ //支持中文,文件使用UTF-8编码 //@author YangHua //@create 20230914 //@company QianHuo // //@description:工具包按钮管理 //============================================================ public class ToolsItemManager : MonoSingleton { public GameObject toolPanel; public List toolItems = new List(); public ToolItem toolItemPrefab; public Transform toolsContent; public Button closeBtn; public UnityEvent ItemClick; public Button recoverBtn; public Toggle bottomToolToggle; public GameObject currentTool; private void Start() { closeBtn.onClick.AddListener(() => { SwictchToolPanel(false); }); recoverBtn.onClick.AddListener(() => { RecoverCurrentInstantiateTool(currentTool); }); recoverBtn.gameObject.SetActive(false); } public void SwictchToolPanel(bool isActive) { toolPanel.SetActive(isActive); } /// /// 在工具间生成图标 /// /// public void CreatToolItem(GameObject currentModel) { ToolItem tTemp = Instantiate(toolItemPrefab, toolsContent); tTemp.SetValue(currentModel.name, currentModel.transform); tTemp.SetState(true); if (tTemp.toolName == "工作卡") { tTemp.selfButton.interactable = true; tTemp.selfButton.onClick.AddListener(() => { UIManager.Instance.jobCardController.jobCardPanel.SetActive(true); SetToggleState(); }); } else { tTemp.selfButton.onClick.AddListener(() => { ItemClick?.Invoke(tTemp.prefab); recoverBtn.gameObject.SetActive(true); bottomToolToggle.interactable = false; SetToggleState(); }); } toolItems.Add(tTemp); } public void RemoveNull() { for (int i = 0; i < toolItems.Count; i++) { if (toolItems[i] == null) toolItems.RemoveAt(i); } } public void SetToggleState() { bottomToolToggle.isOn = false; SwictchToolPanel(false); } /// /// /// /// public void RecoverCurrentInstantiateTool(GameObject tool) { if (tool != null) Destroy(tool); bottomToolToggle.interactable = true; recoverBtn.gameObject.SetActive(false); } /// /// 需要3D去调用 /// public void SwitchAllToolItems() { for (int i = 0; i < toolItems.Count; i++) { if (toolItems[i] != null) toolItems[i].SwitchSelfIsClick(); else toolItems.RemoveAt(i); } } }