148 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			148 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			C#
		
	
	
	
| 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<ToolsItemManager>
 | ||
| {
 | ||
|     public GameObject toolPanel;
 | ||
|     public List<ToolItem> toolItems = new List<ToolItem>();
 | ||
|     public ToolItem toolItemPrefab;
 | ||
|     public Transform toolsContent;
 | ||
|     public Button closeBtn;
 | ||
|     public UnityEvent<GameObject> ItemClick;
 | ||
|     public Button recoverBtn;
 | ||
|     public UnityEvent recoverEvent = new UnityEvent();
 | ||
|     public Toggle bottomToolToggle;
 | ||
|     public GameObject currentTool;
 | ||
|     public GameObject ServerRecorderPanel;
 | ||
| 
 | ||
|     private void Start()
 | ||
|     {
 | ||
|         closeBtn.onClick.AddListener(() => { SwictchToolPanel(false); });
 | ||
|         recoverBtn.onClick.AddListener(() =>
 | ||
|         {
 | ||
|             recoverEvent?.Invoke();
 | ||
|             RecoverCurrentInstantiateTool(currentTool);
 | ||
| 
 | ||
|         });
 | ||
|         recoverBtn.gameObject.SetActive(false);
 | ||
|         ServerRecorderPanel.SetActive(false);
 | ||
|     }
 | ||
| 
 | ||
|     public void SwictchToolPanel(bool isActive)
 | ||
|     {
 | ||
|         toolPanel.SetActive(isActive);
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
|     /// <summary>
 | ||
|     /// 在工具间生成图标
 | ||
|     /// </summary>
 | ||
|     /// <param name="toolName"></param>
 | ||
|     public void CreatToolItem(GameObject currentModel,Vector3 pos,Vector3 RotPos)
 | ||
|     {
 | ||
|         ToolItem tTemp = Instantiate(toolItemPrefab, toolsContent);
 | ||
|         tTemp.SetValue(currentModel.name, currentModel.transform, pos,RotPos);
 | ||
|         tTemp.SetState(true);
 | ||
|         if (tTemp.toolName == "工作卡")
 | ||
|         {
 | ||
|             tTemp.selfButton.interactable = true;
 | ||
|             tTemp.selfButton.onClick.AddListener(() =>
 | ||
|             {
 | ||
|                 UIManager.Instance.jobCardController.jobCardPanel.SetActive(true);
 | ||
|                 SetToggleState();
 | ||
|                 UIManager.Instance.bottomCotroller.SwitchFirstPerson(false);
 | ||
|                 Debug.Log("1212");
 | ||
|             });
 | ||
|         }
 | ||
|         else if (tTemp.toolName == "服务器记录仪")
 | ||
|         {
 | ||
|             tTemp.selfButton.onClick.AddListener(() =>
 | ||
|             {
 | ||
|                 StopCoroutine(WaitShowServerRecorderPanel());
 | ||
|                 StartCoroutine(WaitShowServerRecorderPanel());
 | ||
|                 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);
 | ||
|     }
 | ||
| 
 | ||
|     /// <summary>
 | ||
|     /// 
 | ||
|     /// </summary>
 | ||
|     /// <param name="tool"></param>
 | ||
|     public void RecoverCurrentInstantiateTool(GameObject tool)
 | ||
|     {
 | ||
|         if (tool != null)
 | ||
|             Destroy(tool);
 | ||
|         bottomToolToggle.interactable = true;
 | ||
|         recoverBtn.gameObject.SetActive(false);
 | ||
|     }
 | ||
| 
 | ||
|     /// <summary>
 | ||
|     /// 需要3D去调用
 | ||
|     /// </summary>
 | ||
|     public void SwitchAllToolItems()
 | ||
|     {
 | ||
|         for (int i = 0; i < toolItems.Count; i++)
 | ||
|         {
 | ||
|             if (toolItems[i] != null)
 | ||
|                 toolItems[i].SwitchSelfIsClick();
 | ||
|             else
 | ||
|                 toolItems.RemoveAt(i);
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
|     public void ResetState()
 | ||
|     {
 | ||
|         for (int i = 0; i < toolItems.Count; i++)
 | ||
|         {
 | ||
|             toolItems[i].SetState(true);
 | ||
|         }
 | ||
|     }
 | ||
| 
 | ||
| 
 | ||
|     public IEnumerator WaitShowServerRecorderPanel()
 | ||
|     {
 | ||
|         ServerRecorderPanel.gameObject.SetActive(true);
 | ||
|         yield return new WaitForSeconds(2f);
 | ||
|         ServerRecorderPanel.gameObject.SetActive(false);
 | ||
|     }
 | ||
| }
 |