Ver Fonte

【+】ToDoing.......
1.增加工具间和工具包的概念

lxd há 6 meses atrás
pai
commit
72d90d8f79
18 ficheiros alterados com 869 adições e 120 exclusões
  1. 59 7
      Framework/Scripts/Proxys/ToolConfigProxy.cs
  2. 0 6
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/ImageAndTextNameSetPanel/ImageOptionSetItem.cs
  3. 1 1
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel.Designer.cs
  4. 5 5
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel.cs
  5. 1 1
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/ExamInfo.Designer.cs
  6. 9 7
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/OperateStep.Designer.cs
  7. 23 1
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/OperateStep.cs
  8. 1 1
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/OperateStep/FistStepItem.Designer.cs
  9. 1 1
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/OperateStep/SecondStepItem.Designer.cs
  10. 1 1
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/PracticeResult.Designer.cs
  11. 1 1
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/ScoreInfo.Designer.cs
  12. 1 1
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/StartTips.Designer.cs
  13. 1 1
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/StudyPanel.Designer.cs
  14. 1 1
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/SubmitResult.Designer.cs
  15. 72 21
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/ToolLibraryForm.cs
  16. 40 4
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/ToolLibraryForm/ToolLibrarySelectElement.cs
  17. 16 2
      OperationUIFrame/OperationUIFrameV2/Scripts/UI/ToolLibraryForm/ToolTypeElement.cs
  18. 636 58
      OperationUIFrame/OperationUIFrameV2/UIPrefabs/PC_OperatePanel.prefab

+ 59 - 7
Framework/Scripts/Proxys/ToolConfigProxy.cs

@@ -9,6 +9,8 @@ public class ToolConfigProxy : DataProxy
 
     Dictionary<string,Sprite> m_DicToolSprites;
 
+    public List<ToolConfigInfo> m_CurrentToolKitConfigInfos;
+
     /// <summary>
     /// 默认工具信息表加载路径
     /// </summary>
@@ -23,6 +25,8 @@ public class ToolConfigProxy : DataProxy
         m_ToolConfigPath = Path.Combine(GlobalConfig.toolConfigTablePath, "工具信息表.xlsx");
 
         m_ToolConfigInfos = ExcelHelper.ReadInfoFromExcel<ToolConfigInfo>(m_ToolConfigPath, 1);
+
+        m_CurrentToolKitConfigInfos = new List<ToolConfigInfo>();
     }
 
     public override void OnRemove()
@@ -82,17 +86,17 @@ public class ToolConfigProxy : DataProxy
     /// </summary>
     /// <param name="toolType"></param>
     /// <returns></returns>
-    public List<ToolConfigInfo> GetToolConfigInfosByToolType(string toolType)
+    public List<ToolConfigInfo> GetToolConfigInfosByToolType(List<ToolConfigInfo> toolConfigInfos,string toolType)
     {
         List<ToolConfigInfo> tmpList = new List<ToolConfigInfo>();  
 
-        if (m_ToolConfigInfos != null) tmpList = m_ToolConfigInfos.FindAll(tool => tool.toolType == toolType);
+        if (toolConfigInfos != null) tmpList = toolConfigInfos.FindAll(tool => tool.toolType == toolType);
         
         return tmpList;
     }
 
     /// <summary>
-    /// 获取所有工具根据工具类型和工具名称
+    /// 获取所有工具根据工具类型和工具名称(从工具间中筛选)
     /// </summary>
     /// <param name="toolType"></param>
     /// <param name="toolName"></param>
@@ -103,11 +107,11 @@ public class ToolConfigProxy : DataProxy
 
         if (string.IsNullOrEmpty(toolName) && !string.IsNullOrEmpty(toolType))
         {
-            toolConfigInfos = GetToolConfigInfosByToolType(toolType);
+            toolConfigInfos = GetToolConfigInfosByToolType(m_ToolConfigInfos, toolType);
         }
         else if (string.IsNullOrEmpty(toolType) && !string.IsNullOrEmpty(toolName))
         {
-            toolConfigInfos = GetToolConfigInfosByToolNameSearch(toolName);
+            toolConfigInfos = GetToolConfigInfosByToolNameSearch(m_ToolConfigInfos,toolName);
         }
         else if (!string.IsNullOrEmpty(toolName) && !string.IsNullOrEmpty(toolType))
         {
@@ -121,16 +125,47 @@ public class ToolConfigProxy : DataProxy
         return toolConfigInfos;
     }
 
+    /// <summary>
+    /// 从背包中筛选
+    /// </summary>
+    /// <param name="toolType"></param>
+    /// <param name="toolName"></param>
+    /// <returns></returns>
+    public List<ToolConfigInfo> GetToolToolKitConfigInfosByToolTypeAndName(string toolType, string toolName)
+    {
+        List<ToolConfigInfo> toolConfigInfos = new List<ToolConfigInfo>();
+
+        if (string.IsNullOrEmpty(toolName) && !string.IsNullOrEmpty(toolType))
+        {
+            toolConfigInfos = GetToolConfigInfosByToolType(m_CurrentToolKitConfigInfos, toolType);
+        }
+        else if (string.IsNullOrEmpty(toolType) && !string.IsNullOrEmpty(toolName))
+        {
+            toolConfigInfos = GetToolConfigInfosByToolNameSearch(m_CurrentToolKitConfigInfos, toolName);
+        }
+        else if (!string.IsNullOrEmpty(toolName) && !string.IsNullOrEmpty(toolType))
+        {
+            toolConfigInfos = m_CurrentToolKitConfigInfos.FindAll(tool => tool.toolType == toolType && tool.toolName.Contains(toolName));
+        }
+        else
+        {
+            toolConfigInfos = m_CurrentToolKitConfigInfos;
+        }
+
+        return toolConfigInfos;
+    }
+
+
     /// <summary>
     /// 获取所有工具更具工具名的模糊搜索
     /// </summary>
     /// <param name="searchStr"></param>
     /// <returns></returns>
-    public List<ToolConfigInfo> GetToolConfigInfosByToolNameSearch(string searchStr)
+    public List<ToolConfigInfo> GetToolConfigInfosByToolNameSearch(List<ToolConfigInfo> toolConfigInfos, string searchStr)
     {
         List<ToolConfigInfo> tmpList = new List<ToolConfigInfo>();
 
-        if (m_ToolConfigInfos != null) tmpList = m_ToolConfigInfos.FindAll(tool => tool.toolName.Contains(searchStr));
+        if (toolConfigInfos != null) tmpList = toolConfigInfos.FindAll(tool => tool.toolName.Contains(searchStr));
 
         return tmpList;
     }
@@ -159,6 +194,23 @@ public class ToolConfigProxy : DataProxy
         return m_ToolConfigInfos.Find(t => t.toolName == _toolName);
     }
 
+   /// <summary>
+   /// 设置工具背包的工具
+   /// </summary>
+   /// <param name="toolIds">工具信息ID</param>
+    public void SetCurrrentToolKitToolConfigInfo(List<int> toolIds)
+    {
+        m_CurrentToolKitConfigInfos = new List<ToolConfigInfo>();
+
+        foreach (var id in toolIds)
+        {
+            ToolConfigInfo toolConfigInfo = new ToolConfigInfo();
+
+            toolConfigInfo = GetTooConfigInfoById(id);
+            m_CurrentToolKitConfigInfos.Add(toolConfigInfo);
+        }
+    }
+
     /// <summary>
     /// 根据工具名查找工具精灵
     /// </summary>

+ 0 - 6
OperationUIFrame/OperationUIFrameV2/Scripts/UI/ImageAndTextNameSetPanel/ImageOptionSetItem.cs

@@ -73,13 +73,7 @@ namespace QFramework
 				m_PictureName = tmpFilePaths[0].GetFileName();
 				string tmpPicturePath = "Config/题库图文图片/" + m_PictureName;
 				ClickBtn.GetComponent<Image>().sprite = LoadHelper.LoadSpriteFromStreamming(tmpPicturePath);
-
 			}
-
-            Debug.LogError(tmpFilePaths[0].Contains(Application.streamingAssetsPath));
-			Debug.LogError(tmpFilePaths[0].GetFileName());
-
-			//File.Copy(tmpFilePaths[0],Application.streamingAssetsPath + "/Config/题库图文图片/" + tmpFilePaths[0].GetFileName() + ".png");
 		}
 
 		/// <summary>

+ 1 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel.Designer.cs

@@ -5,7 +5,7 @@ using QFramework;
 
 namespace QFramework
 {
-	// Generate Id:5580ade9-3b1b-4996-b6c4-da02ba364b28
+	// Generate Id:d750b441-020e-43fc-8545-e8e18b2c997b
 	public partial class PC_OperatePanel
 	{
 		public const string Name = "PC_OperatePanel";

+ 5 - 5
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel.cs

@@ -245,15 +245,15 @@ namespace QFramework
             //当前步骤ID
             CurrentStepID = stepID + 1;
             //刷新工具列表
-            if (UIKit.GetPanel<ToolLibraryForm>() == null)
-            {
-                UIKit.OpenPanel<ToolLibraryForm>().Hide();
-            }
+            //if (UIKit.GetPanel<ToolLibraryForm>() == null)
+            //{
+            //    UIKit.OpenPanel<ToolLibraryForm>().Hide();
+            //}
 
             //流程进度
             OperateStep.ScheduleText.text = "<color=#20C7E3CC>" + CurrentStepID + "</color>" + "<color=#FFFFFF66>/" + ProcessManagement.Instance.processes.Count + "</color>";
 
-            UIKit.GetPanel<ToolLibraryForm>().RefrushAllChoseTool();
+            //UIKit.GetPanel<ToolLibraryForm>().RefrushAllChoseTool();
             //刷新列表
             if (OperateSetting.Instance.m_CurrentOperationMode != OperationMode.Learn)
             {

+ 1 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/ExamInfo.Designer.cs

@@ -1,5 +1,5 @@
 /****************************************************************************
- * 2024.9 CHIVA
+ * 2025.6 LXD
  ****************************************************************************/
 
 using UnityEngine;

+ 9 - 7
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/OperateStep.Designer.cs

@@ -1,5 +1,5 @@
 /****************************************************************************
- * 2024.9 CHIVA
+ * 2025.6 LXD
  ****************************************************************************/
 
 using UnityEngine;
@@ -24,19 +24,20 @@ namespace QFramework
 		[SerializeField] public UnityEngine.UI.Image BottomImage;
 		[SerializeField] public UnityEngine.UI.Button PlayBtn;
 		[SerializeField] public UnityEngine.UI.Button PauseBtn;
+		[SerializeField] public UnityEngine.UI.Image SubtitleBg;
+		[SerializeField] public RollingByTime SubtitleMask;
+		[SerializeField] public UnityEngine.UI.Text SubtitleText;
 		[SerializeField] public UnityEngine.UI.Button OperateLogBtn;
 		[SerializeField] public DownBGButton BtnPrefab;
 		[SerializeField] public DownBGButton HelpBtn;
 		[SerializeField] public DownBGButton ToolLibraryBtn;
+		[SerializeField] public DownBGButton ToolBackPackBtn;
 		[SerializeField] public DownBGButton AutoPlayBtn;
 		[SerializeField] public DownBGButton EndExam;
 		[SerializeField] public UnityEngine.UI.Image HeadPortraitBg;
 		[SerializeField] public UnityEngine.UI.Text HeadPortraitText;
 		[SerializeField] public UnityEngine.UI.Text UserName;
 		[SerializeField] public UnityEngine.UI.Text ScheduleText;
-		[SerializeField] public UnityEngine.UI.Image SubtitleBg;
-		[SerializeField] public RollingByTime SubtitleMask;
-		[SerializeField] public UnityEngine.UI.Text SubtitleText;
 
 		public void Clear()
 		{
@@ -54,19 +55,20 @@ namespace QFramework
 			BottomImage = null;
 			PlayBtn = null;
 			PauseBtn = null;
+			SubtitleBg = null;
+			SubtitleMask = null;
+			SubtitleText = null;
 			OperateLogBtn = null;
 			BtnPrefab = null;
 			HelpBtn = null;
 			ToolLibraryBtn = null;
+			ToolBackPackBtn = null;
 			AutoPlayBtn = null;
 			EndExam = null;
 			HeadPortraitBg = null;
 			HeadPortraitText = null;
 			UserName = null;
 			ScheduleText = null;
-			SubtitleBg = null;
-			SubtitleMask = null;
-			SubtitleText = null;
 		}
 
 		public override string ComponentName

+ 23 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/OperateStep.cs

@@ -33,6 +33,8 @@ namespace QFramework
             HelpBtn.Button.onClick.AddListener(OnHelpBtnClick);
             HelpBtn.isToggle = true;
             ToolLibraryBtn.Button.onClick.AddListener(OnToolLibraryBtnClick);
+            ToolBackPackBtn.Button.onClick.AddListener(OnToolBackPackBtnClick);
+
             AutoPlayBtn.Button.onClick.AddListener(OnAutoPlayBtnClick);
             AutoPlayBtn.isToggle = true;
             EndExam.Button.onClick.AddListener(OnEndExamBtnClick);
@@ -127,14 +129,34 @@ namespace QFramework
             UIKit.GetPanel<PC_OperatePanel>().SubmitResult.gameObject.SetActive(true);
         }
 
+        /// <summary>
+        /// 工具背包
+        /// </summary>
+        private void OnToolBackPackBtnClick()
+        {
+            ToolLibraryForm tmpToolLibraryForm = UIKit.GetPanel<ToolLibraryForm>();
 
+            if (tmpToolLibraryForm == null)
+            {
+                UIKit.OpenPanel<ToolLibraryForm>(UILevel.PopUI,new ToolLibraryFormData() { toolLibraryType = ToolLibraryType.ToolKit});
+            }
+            else if (tmpToolLibraryForm != null && !tmpToolLibraryForm.isActiveAndEnabled)
+            {
+                UIKit.ShowPanel<ToolLibraryForm>();
+            }
+
+        }
+
+        /// <summary>
+        /// 工具库点击
+        /// </summary>
         private void OnToolLibraryBtnClick()
         {
             ToolLibraryForm tmpToolLibraryForm = UIKit.GetPanel<ToolLibraryForm>();
 
             if (tmpToolLibraryForm == null)
             { 
-                UIKit.OpenPanel<ToolLibraryForm>(UILevel.PopUI);
+                UIKit.OpenPanel<ToolLibraryForm>(UILevel.PopUI, new ToolLibraryFormData() { toolLibraryType = ToolLibraryType.ToolRoom });
             }
             else if (tmpToolLibraryForm != null && !tmpToolLibraryForm.isActiveAndEnabled)
             {

+ 1 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/OperateStep/FistStepItem.Designer.cs

@@ -1,5 +1,5 @@
 /****************************************************************************
- * 2024.9 CHIVA
+ * 2025.6 LXD
  ****************************************************************************/
 
 using UnityEngine;

+ 1 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/OperateStep/SecondStepItem.Designer.cs

@@ -1,5 +1,5 @@
 /****************************************************************************
- * 2024.9 CHIVA
+ * 2025.6 LXD
  ****************************************************************************/
 
 using UnityEngine;

+ 1 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/PracticeResult.Designer.cs

@@ -1,5 +1,5 @@
 /****************************************************************************
- * 2024.9 CHIVA
+ * 2025.6 LXD
  ****************************************************************************/
 
 using UnityEngine;

+ 1 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/ScoreInfo.Designer.cs

@@ -1,5 +1,5 @@
 /****************************************************************************
- * 2024.9 CHIVA
+ * 2025.6 LXD
  ****************************************************************************/
 
 using UnityEngine;

+ 1 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/StartTips.Designer.cs

@@ -1,5 +1,5 @@
 /****************************************************************************
- * 2024.9 CHIVA
+ * 2025.6 LXD
  ****************************************************************************/
 
 using UnityEngine;

+ 1 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/StudyPanel.Designer.cs

@@ -1,5 +1,5 @@
 /****************************************************************************
- * 2024.9 CHIVA
+ * 2025.6 LXD
  ****************************************************************************/
 
 using UnityEngine;

+ 1 - 1
OperationUIFrame/OperationUIFrameV2/Scripts/UI/PC_OperatePanel/SubmitResult.Designer.cs

@@ -1,5 +1,5 @@
 /****************************************************************************
- * 2024.9 CHIVA
+ * 2025.6 LXD
  ****************************************************************************/
 
 using UnityEngine;

+ 72 - 21
OperationUIFrame/OperationUIFrameV2/Scripts/UI/ToolLibraryForm.cs

@@ -6,8 +6,21 @@ using I2.Loc;
 
 namespace QFramework
 {
+    public enum  ToolLibraryType
+    {
+        //묏야쇌
+        ToolRoom,
+        //묏야관
+        ToolKit
+    }
+
     public class ToolLibraryFormData : UIPanelData
     {
+        /// <summary>
+        /// 역폘돨묏야욋잚謹
+        /// </summary>
+        public ToolLibraryType toolLibraryType = ToolLibraryType.ToolRoom;
+
     }
     public partial class ToolLibraryForm : UIPanel
     {
@@ -15,6 +28,8 @@ namespace QFramework
 
         public List<Sprite> m_Sprites = new List<Sprite>();
 
+        public ToolLibraryType m_CurrentToolLibraryType;
+
         protected override void OnInit(IUIData uiData = null)
         {
             mData = uiData as ToolLibraryFormData ?? new ToolLibraryFormData();
@@ -23,21 +38,47 @@ namespace QFramework
 
             ToolLibrarySelectElement.InitData();
             ToolLibrarySelectElement.TitleText.text = ScriptLocalization.tooltype.all;
+
+            m_CurrentToolLibraryType = mData.toolLibraryType;
         }
 
         protected override void OnOpen(IUIData uiData = null)
         {
-            ToolLibrarySelectElement.OpenUI();
+            mData = uiData as ToolLibraryFormData ?? new ToolLibraryFormData();
+
+            m_CurrentToolLibraryType = mData.toolLibraryType;
+
+            switch (m_CurrentToolLibraryType)
+            {
+                case ToolLibraryType.ToolRoom:
+                    ToolLibrarySelectElement.OpenToolRoomUI();
+                    break;
+                case ToolLibraryType.ToolKit:
+                    ToolLibrarySelectElement.OpenToolKitUI();
+                    break;
+                default:
+                    break;
+            }
+
+            
             ToolTypeElement.RefrushTypeBtn();
             transform.transform.SetAsLastSibling();
         }
 
         protected override void OnShow()
         {
-            ToolLibrarySelectElement.ShowUI();
-            //岬劤묏야죗깊槨홍꼬
-            ToolTypeElement.RefrushTypeBtn();
-            transform.transform.SetAsLastSibling();
+            //묏야관
+            if (mData.toolLibraryType == ToolLibraryType.ToolKit)
+            {
+
+            }
+            else if (mData.toolLibraryType == ToolLibraryType.ToolRoom)
+            {
+                ToolLibrarySelectElement.ShowUI();
+                //岬劤묏야죗깊槨홍꼬
+                ToolTypeElement.RefrushTypeBtn();
+                transform.transform.SetAsLastSibling();
+            }
         }
 
         protected override void OnHide()
@@ -86,7 +127,7 @@ namespace QFramework
                 }
             }
 
-            UIKit.HidePanel<ToolLibraryForm>();
+            UIKit.ClosePanel<ToolLibraryForm>();
         }
 
         /// <summary>
@@ -94,28 +135,38 @@ namespace QFramework
         /// </summary>
         public void OnConfirmBtnClick()
         {
-            List<ToolConfig> tmpToolConfigs = new List<ToolConfig>();
-
             ToolConfigProxy tmpProxy = DAL.Instance.Get<ToolConfigProxy>();
 
-            foreach (var item in m_CurrentSelectToolIDs)
+            //묏야쇌
+            if (mData.toolLibraryType == ToolLibraryType.ToolRoom)
             {
-                ToolConfig tmpToolConfig = new ToolConfig();
-
-                ToolConfigInfo toolConfigInfo = tmpProxy.GetTooConfigInfoById(item);
+                tmpProxy.SetCurrrentToolKitToolConfigInfo(m_CurrentSelectToolIDs);
 
-                tmpToolConfig.toolName = toolConfigInfo.toolName;
-                tmpToolConfig.toolImg = tmpProxy.GetSpriteByToolName(tmpToolConfig.toolName);
-                tmpToolConfig.en_toolName = toolConfigInfo.en_toolName;
-                tmpToolConfig.en_toolType = toolConfigInfo.en_toolType;
-                tmpToolConfig.en_toolDescription = toolConfigInfo.en_toolDescription;
-                tmpToolConfigs.Add(tmpToolConfig);
+                UIKit.ClosePanel<ToolLibraryForm>();
             }
+            else //묏야관
+            {
+                List<ToolConfig> tmpToolConfigs = new List<ToolConfig>();
+
+                foreach (var item in m_CurrentSelectToolIDs)
+                {
+                    ToolConfig tmpToolConfig = new ToolConfig();
 
-            OperateSetting.Instance.m_ToolLibraryToolConfigs = tmpToolConfigs;
+                    ToolConfigInfo toolConfigInfo = tmpProxy.GetTooConfigInfoById(item);
 
-            UIKit.OpenPanel<ToolDisplayForm>(new ToolDisplayFormData() { m_ToolConfigs = tmpToolConfigs });
-            UIKit.HidePanel<ToolLibraryForm>();
+                    tmpToolConfig.toolName = toolConfigInfo.toolName;
+                    tmpToolConfig.toolImg = tmpProxy.GetSpriteByToolName(tmpToolConfig.toolName);
+                    tmpToolConfig.en_toolName = toolConfigInfo.en_toolName;
+                    tmpToolConfig.en_toolType = toolConfigInfo.en_toolType;
+                    tmpToolConfig.en_toolDescription = toolConfigInfo.en_toolDescription;
+                    tmpToolConfigs.Add(tmpToolConfig);
+                }
+
+                OperateSetting.Instance.m_ToolLibraryToolConfigs = tmpToolConfigs;
+
+                UIKit.OpenPanel<ToolDisplayForm>(new ToolDisplayFormData() { m_ToolConfigs = tmpToolConfigs });
+                UIKit.ClosePanel<ToolLibraryForm>();
+            }
         }
 
         public void RefrushAllChoseTool()

+ 40 - 4
OperationUIFrame/OperationUIFrameV2/Scripts/UI/ToolLibraryForm/ToolLibrarySelectElement.cs

@@ -48,7 +48,10 @@ namespace QFramework
             ConfirmBtn.onClick.AddListener(OnConfirmBtnClick);
         }
 
-        public void OpenUI()
+        /// <summary>
+        /// ´ò¿ª±³°üUI
+        /// </summary>
+        public void OpenToolKitUI()
         {
             if (!OperateSetting.Instance.ToolPackUILogic.GetHint()) return;
 
@@ -56,6 +59,15 @@ namespace QFramework
             ShowTargetPage(1);
         }
 
+        /// <summary>
+        /// ´ò¿ª¹¤¾ß¼äUI
+        /// </summary>
+        public void OpenToolRoomUI()
+        {
+            ShowTargetPage(1);
+        }
+
+
         public void ShowUI()
         {
             if (!OperateSetting.Instance.ToolPackUILogic.GetHint()) return;
@@ -97,8 +109,17 @@ namespace QFramework
                 toolItemPrefabs.Add(tmpObj.GetComponent<ToolItemPrefab>());
             }
 
-            SetData(tmpToolConfigProxy.GetAllToolConfigInfos());
-
+            switch (UIKit.GetPanel<ToolLibraryForm>().m_CurrentToolLibraryType)
+            {
+                case ToolLibraryType.ToolRoom:
+                    SetData(tmpToolConfigProxy.GetAllToolConfigInfos());
+                    break;
+                case ToolLibraryType.ToolKit:
+                    SetData(tmpToolConfigProxy.m_CurrentToolKitConfigInfos);
+                    break;
+                default:
+                    break;
+            }
         }
 
         public void SetData(List<ToolConfigInfo> toolConfigInfos)
@@ -163,7 +184,22 @@ namespace QFramework
         {
             ToolConfigProxy toolConfigProxy = DAL.Instance.Get<ToolConfigProxy>();
 
-            m_ToolConfigInfos = toolConfigProxy.GetToolConfigInfosByToolTypeAndName(UIKit.GetPanel<ToolLibraryForm>().ToolTypeElement.curentType, inputStr);
+            switch (UIKit.GetPanel<ToolLibraryForm>().m_CurrentToolLibraryType)
+            {
+                case ToolLibraryType.ToolRoom:
+
+                    m_ToolConfigInfos = toolConfigProxy.GetToolConfigInfosByToolTypeAndName(UIKit.GetPanel<ToolLibraryForm>().ToolTypeElement.curentType, inputStr);
+                    
+                    break;
+                case ToolLibraryType.ToolKit:
+
+                    m_ToolConfigInfos = toolConfigProxy.GetToolToolKitConfigInfosByToolTypeAndName(UIKit.GetPanel<ToolLibraryForm>().ToolTypeElement.curentType, inputStr);
+
+                    break;
+                default:
+                    break;
+            }
+
             SetData(m_ToolConfigInfos);
         }
 

+ 16 - 2
OperationUIFrame/OperationUIFrameV2/Scripts/UI/ToolLibraryForm/ToolTypeElement.cs

@@ -96,9 +96,23 @@ namespace QFramework
 
             ChangBtnGroupState(curentType);
 
-            List<ToolConfigInfo> tmpToolConfigInfos;
+            List<ToolConfigInfo> tmpToolConfigInfos = new List<ToolConfigInfo>();
 
-            tmpToolConfigInfos = tmpToolConfigProxy.GetToolConfigInfosByToolTypeAndName(curentType, UIKit.GetPanel<ToolLibraryForm>().ToolLibrarySelectElement.SearchInputField.text);
+            switch (UIKit.GetPanel<ToolLibraryForm>().m_CurrentToolLibraryType)
+            {
+                case ToolLibraryType.ToolRoom:
+
+                    tmpToolConfigInfos = tmpToolConfigProxy.GetToolConfigInfosByToolTypeAndName(curentType, UIKit.GetPanel<ToolLibraryForm>().ToolLibrarySelectElement.SearchInputField.text);
+
+                    break;
+                case ToolLibraryType.ToolKit:
+
+                    tmpToolConfigInfos = tmpToolConfigProxy.GetToolToolKitConfigInfosByToolTypeAndName(curentType,UIKit.GetPanel<ToolLibraryForm>().ToolLibrarySelectElement.SearchInputField.text);
+
+                    break;
+                default:
+                    break;
+            }
 
             UIKit.GetPanel<ToolLibraryForm>().ToolLibrarySelectElement.SetData(tmpToolConfigInfos);
         }

+ 636 - 58
OperationUIFrame/OperationUIFrameV2/UIPrefabs/PC_OperatePanel.prefab

@@ -317,7 +317,7 @@ RectTransform:
   - {fileID: 4112798851261557581}
   - {fileID: 3332119968730703472}
   m_Father: {fileID: 3996751866356890438}
-  m_RootOrder: 3
+  m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -3597,7 +3597,7 @@ RectTransform:
   - {fileID: 3631619018895126077}
   - {fileID: 9220195329770722693}
   m_Father: {fileID: 5937661528918436544}
-  m_RootOrder: 5
+  m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
@@ -4325,6 +4325,81 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!1 &1283578622307613080
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6525219100594397421}
+  - component: {fileID: 4376026617540381168}
+  - component: {fileID: 3018188158729969018}
+  m_Layer: 5
+  m_Name: PromptIcon
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &6525219100594397421
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1283578622307613080}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 5270166560972114613}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 0.5}
+  m_AnchorMax: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 118, y: 45}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4376026617540381168
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1283578622307613080}
+  m_CullTransparentMesh: 0
+--- !u!114 &3018188158729969018
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1283578622307613080}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 0
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: -3592251023943376180, guid: c8c709b3849a552459d805ab3a1016e3,
+    type: 3}
+  m_Type: 1
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
 --- !u!1 &1359116330659365367
 GameObject:
   m_ObjectHideFlags: 0
@@ -4473,6 +4548,170 @@ MonoBehaviour:
   m_FillOrigin: 0
   m_UseSpriteMesh: 0
   m_PixelsPerUnitMultiplier: 1
+--- !u!1 &1382750477171708210
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5270166560972114613}
+  - component: {fileID: 1937909510105554881}
+  - component: {fileID: 5108399344299156328}
+  - component: {fileID: 7143229464513666475}
+  - component: {fileID: 2163664679872319579}
+  - component: {fileID: 9070152929112600477}
+  m_Layer: 5
+  m_Name: ToolBackPackBtn
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &5270166560972114613
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1382750477171708210}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 8431982910122911666}
+  - {fileID: 4690495068339113261}
+  - {fileID: 8606074286178054783}
+  - {fileID: 6525219100594397421}
+  m_Father: {fileID: 3996751866356890438}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 118, y: 45}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &1937909510105554881
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1382750477171708210}
+  m_CullTransparentMesh: 0
+--- !u!114 &5108399344299156328
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1382750477171708210}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0, g: 0, b: 0, a: 0}
+  m_RaycastTarget: 1
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 776f629a4c02a2746b51409b704f02b4, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!114 &7143229464513666475
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1382750477171708210}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_SelectOnUp: {fileID: 0}
+    m_SelectOnDown: {fileID: 0}
+    m_SelectOnLeft: {fileID: 0}
+    m_SelectOnRight: {fileID: 0}
+  m_Transition: 1
+  m_Colors:
+    m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+    m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+    m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+    m_ColorMultiplier: 1
+    m_FadeDuration: 0.1
+  m_SpriteState:
+    m_HighlightedSprite: {fileID: 0}
+    m_PressedSprite: {fileID: 0}
+    m_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Selected
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 5108399344299156328}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!114 &2163664679872319579
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1382750477171708210}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1505a3e801c2552418096985593d4746, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_BtnName: "\u5DE5\u5177\u5E93"
+  m_NormalIcon: {fileID: 21300000, guid: 2c07f9270e2471a47b36a31f1392ba9a, type: 3}
+  m_HoverIcon: {fileID: 21300000, guid: c29970e4344ee8e4e85dbe0150de915b, type: 3}
+  m_SelectIcon: {fileID: 21300000, guid: b196fbc68213c734488f087758dd1b07, type: 3}
+  m_NormalColor: {r: 0.99215686, g: 0.99215686, b: 0.99215686, a: 0.78039217}
+  m_HoverColor: {r: 1, g: 1, b: 1, a: 1}
+  m_SelectColor: {r: 0.92941177, g: 0.53333336, b: 0.09411765, a: 1}
+  m_NormalFont: {fileID: 12800000, guid: 40655297447ed2e46a2d4b5c829580da, type: 3}
+  m_HoverFont: {fileID: 12800000, guid: 40655297447ed2e46a2d4b5c829580da, type: 3}
+  m_SelectFont: {fileID: 12800000, guid: 40655297447ed2e46a2d4b5c829580da, type: 3}
+  isToggle: 0
+--- !u!114 &9070152929112600477
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1382750477171708210}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  MarkType: 0
+  CustomComponentName: HelpBtn
+  ComponentGeneratePath: 
+  CustomComment: 
+  mComponentName: DownBGButton
 --- !u!1 &1441077428125601365
 GameObject:
   m_ObjectHideFlags: 0
@@ -5177,7 +5416,7 @@ RectTransform:
   - {fileID: 1479329931361206601}
   - {fileID: 7496846978124364511}
   m_Father: {fileID: 5937661528918436544}
-  m_RootOrder: 6
+  m_RootOrder: 5
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
@@ -5631,7 +5870,6 @@ GameObject:
   - component: {fileID: 4922745312523913940}
   - component: {fileID: 7584956565697318907}
   - component: {fileID: -7679864437989238778}
-  - component: {fileID: 4778384032308920012}
   - component: {fileID: 8003666371237531374}
   m_Layer: 5
   m_Name: StartTips
@@ -5660,7 +5898,7 @@ RectTransform:
   - {fileID: 8922285082026378132}
   - {fileID: 8232831647091677057}
   m_Father: {fileID: 5937661528918436544}
-  m_RootOrder: 9
+  m_RootOrder: 8
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
@@ -5693,23 +5931,6 @@ MonoBehaviour:
   StartInfo: {fileID: 6582076778981104734}
   StartTipsInfo: {fileID: 2193633642444391031}
   TipsCloseBtn: {fileID: 8400390701310303612}
---- !u!114 &4778384032308920012
-MonoBehaviour:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 2277631227511143721}
-  m_Enabled: 1
-  m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 0d51f3a7c41ab0346b49ae50d456bece, type: 3}
-  m_Name: 
-  m_EditorClassIdentifier: 
-  MarkType: 0
-  CustomComponentName: StartTips
-  ComponentGeneratePath: 
-  CustomComment: 
-  mComponentName: UnityEngine.CanvasGroup
 --- !u!225 &8003666371237531374
 CanvasGroup:
   m_ObjectHideFlags: 0
@@ -6528,7 +6749,7 @@ MonoBehaviour:
     m_HorizontalOverflow: 0
     m_VerticalOverflow: 0
     m_LineSpacing: 1
-  m_Text: "\u5DE5\u5177\u5E93"
+  m_Text: "\u5DE5\u5177\u95F4"
 --- !u!114 &7149922715369371895
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -6692,7 +6913,7 @@ RectTransform:
   - {fileID: 3026581704027024504}
   - {fileID: 2034866953079108813}
   m_Father: {fileID: 3996751866356890438}
-  m_RootOrder: 4
+  m_RootOrder: 5
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 0, y: 0}
@@ -8142,7 +8363,7 @@ MonoBehaviour:
     m_VerticalOverflow: 0
     m_LineSpacing: 1
   m_Text: 1
---- !u!1 &3419607304384266226
+--- !u!1 &3394259102054683291
 GameObject:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
@@ -8150,59 +8371,133 @@ GameObject:
   m_PrefabAsset: {fileID: 0}
   serializedVersion: 6
   m_Component:
-  - component: {fileID: 6260684498261801223}
-  - component: {fileID: 8744086820096431188}
-  - component: {fileID: 4069285895636987839}
-  - component: {fileID: 8826974383224089088}
-  - component: {fileID: 6452999068180347439}
+  - component: {fileID: 8431982910122911666}
+  - component: {fileID: 5173601696117333756}
+  - component: {fileID: 4351306627504678299}
   m_Layer: 5
-  m_Name: Text
+  m_Name: SelectArea
   m_TagString: Untagged
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
---- !u!224 &6260684498261801223
+  m_IsActive: 0
+--- !u!224 &8431982910122911666
 RectTransform:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3419607304384266226}
+  m_GameObject: {fileID: 3394259102054683291}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
-  m_Father: {fileID: 6133160858731787273}
+  m_Father: {fileID: 5270166560972114613}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 1, y: 0.5}
-  m_AnchorMax: {x: 1, y: 0.5}
-  m_AnchoredPosition: {x: 8, y: 0}
-  m_SizeDelta: {x: 68, y: 30}
-  m_Pivot: {x: 0, y: 0.5}
---- !u!222 &8744086820096431188
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5173601696117333756
 CanvasRenderer:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3419607304384266226}
+  m_GameObject: {fileID: 3394259102054683291}
   m_CullTransparentMesh: 0
---- !u!114 &4069285895636987839
+--- !u!114 &4351306627504678299
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_GameObject: {fileID: 3419607304384266226}
+  m_GameObject: {fileID: 3394259102054683291}
   m_Enabled: 1
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
-  m_Color: {r: 0.990566, g: 0.990566, b: 0.990566, a: 0.78039217}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: f572b7acdd46c7c4a87973fd1c7e3196, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!1 &3419607304384266226
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6260684498261801223}
+  - component: {fileID: 8744086820096431188}
+  - component: {fileID: 4069285895636987839}
+  - component: {fileID: 8826974383224089088}
+  - component: {fileID: 6452999068180347439}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &6260684498261801223
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3419607304384266226}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 6133160858731787273}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0.5}
+  m_AnchorMax: {x: 1, y: 0.5}
+  m_AnchoredPosition: {x: 8, y: 0}
+  m_SizeDelta: {x: 68, y: 30}
+  m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &8744086820096431188
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3419607304384266226}
+  m_CullTransparentMesh: 0
+--- !u!114 &4069285895636987839
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3419607304384266226}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.990566, g: 0.990566, b: 0.990566, a: 0.78039217}
   m_RaycastTarget: 1
   m_Maskable: 1
   m_OnCullStateChanged:
@@ -9649,6 +9944,138 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   m_HorizontalFit: 2
   m_VerticalFit: 0
+--- !u!1 &4100811227662103287
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1457252525369314623}
+  - component: {fileID: 154407533828028012}
+  - component: {fileID: 2380627644381222161}
+  - component: {fileID: 1969718208585390230}
+  - component: {fileID: 4484805157731928460}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1457252525369314623
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4100811227662103287}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 4690495068339113261}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0.5}
+  m_AnchorMax: {x: 1, y: 0.5}
+  m_AnchoredPosition: {x: 8, y: 0}
+  m_SizeDelta: {x: 0, y: 30}
+  m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &154407533828028012
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4100811227662103287}
+  m_CullTransparentMesh: 0
+--- !u!114 &2380627644381222161
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4100811227662103287}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.99215686, g: 0.99215686, b: 0.99215686, a: 0.78039217}
+  m_RaycastTarget: 1
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 40655297447ed2e46a2d4b5c829580da, type: 3}
+    m_FontSize: 17
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 1
+    m_MaxSize: 40
+    m_Alignment: 3
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: "\u5DE5\u5177\u5305"
+--- !u!114 &1969718208585390230
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4100811227662103287}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 344445a89b4f74a0e9a0a766903df87e, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  mTerm: toolkit
+  mTermSecondary: 
+  PrimaryTermModifier: 0
+  SecondaryTermModifier: 0
+  TermPrefix: 
+  TermSuffix: 
+  LocalizeOnAwake: 1
+  IgnoreRTL: 0
+  MaxCharactersInRTL: 0
+  IgnoreNumbersInRTL: 1
+  CorrectAlignmentForRTL: 1
+  AddSpacesToJoinedLanguages: 0
+  AllowLocalizedParameters: 1
+  TranslatedObjects: []
+  LocalizeEvent:
+    m_PersistentCalls:
+      m_Calls: []
+  AlwaysForceLocalize: 0
+  LocalizeCallBack:
+    Target: {fileID: 0}
+    MethodName: 
+  mGUI_ShowReferences: 0
+  mGUI_ShowTems: 1
+  mGUI_ShowCallback: 0
+  mLocalizeTarget: {fileID: 0}
+  mLocalizeTargetName: I2.Loc.LocalizeTarget_UnityUI_Text
+--- !u!114 &4484805157731928460
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4100811227662103287}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_HorizontalFit: 2
+  m_VerticalFit: 0
 --- !u!1 &4125604218355242711
 GameObject:
   m_ObjectHideFlags: 0
@@ -10044,6 +10471,80 @@ MonoBehaviour:
   m_Name: 
   m_EditorClassIdentifier: 
   scrollview: {fileID: 270643271180574912}
+--- !u!1 &4382537951684330856
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8606074286178054783}
+  - component: {fileID: 5881226935832798370}
+  - component: {fileID: 8213599523179106997}
+  m_Layer: 5
+  m_Name: Line
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &8606074286178054783
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4382537951684330856}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 5270166560972114613}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 0}
+  m_AnchoredPosition: {x: 0, y: 1.5}
+  m_SizeDelta: {x: 0, y: 3}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &5881226935832798370
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4382537951684330856}
+  m_CullTransparentMesh: 0
+--- !u!114 &8213599523179106997
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4382537951684330856}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 776f629a4c02a2746b51409b704f02b4, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
 --- !u!1 &4458014759072258169
 GameObject:
   m_ObjectHideFlags: 0
@@ -11055,7 +11556,7 @@ RectTransform:
   - {fileID: 738827904464874878}
   - {fileID: 3583031758018330686}
   m_Father: {fileID: 5937661528918436544}
-  m_RootOrder: 4
+  m_RootOrder: 3
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
   m_AnchorMax: {x: 1, y: 1}
@@ -12123,8 +12624,9 @@ RectTransform:
   - {fileID: 8695666795943990804}
   - {fileID: 3832599344791639967}
   - {fileID: 5388564051140459057}
+  - {fileID: 4919306754663186500}
   m_Father: {fileID: 5937661528918436544}
-  m_RootOrder: 3
+  m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0.5}
   m_AnchorMax: {x: 0, y: 0.5}
@@ -12194,19 +12696,20 @@ MonoBehaviour:
   BottomImage: {fileID: 7592058356707018868}
   PlayBtn: {fileID: 1447756477387640454}
   PauseBtn: {fileID: 6605819935583771773}
+  SubtitleBg: {fileID: 705615606031942045}
+  SubtitleMask: {fileID: 1485844128724128966}
+  SubtitleText: {fileID: 639125689688842731}
   OperateLogBtn: {fileID: 515063179654277925}
   BtnPrefab: {fileID: 8406303922268797849}
   HelpBtn: {fileID: 4638903202169998952}
   ToolLibraryBtn: {fileID: 3355486909981075256}
+  ToolBackPackBtn: {fileID: 2163664679872319579}
   AutoPlayBtn: {fileID: 1594443530775498608}
   EndExam: {fileID: 4805380361755657439}
   HeadPortraitBg: {fileID: 2541165987695690569}
   HeadPortraitText: {fileID: 1879935657863090162}
   UserName: {fileID: 9134542656545873048}
   ScheduleText: {fileID: 951661861643714039}
-  SubtitleBg: {fileID: 705615606031942045}
-  SubtitleMask: {fileID: 1485844128724128966}
-  SubtitleText: {fileID: 639125689688842731}
 --- !u!1 &5773382537844675809
 GameObject:
   m_ObjectHideFlags: 0
@@ -12470,7 +12973,6 @@ RectTransform:
   m_Children:
   - {fileID: 9020418009363576861}
   - {fileID: 244895649399475673}
-  - {fileID: 4919306754663186500}
   - {fileID: 4314881067965048231}
   - {fileID: 4366126687401179268}
   - {fileID: 1032962305134131580}
@@ -14025,6 +14527,7 @@ RectTransform:
   - {fileID: 1015133840648486069}
   - {fileID: 3577774132439171834}
   - {fileID: 4056381284791150215}
+  - {fileID: 5270166560972114613}
   - {fileID: 7746784864264408786}
   - {fileID: 8028946224031322923}
   m_Father: {fileID: 4919306754663186500}
@@ -14373,7 +14876,7 @@ RectTransform:
   - {fileID: 3396386238433973968}
   - {fileID: 6398039157307350565}
   m_Father: {fileID: 5937661528918436544}
-  m_RootOrder: 7
+  m_RootOrder: 6
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
@@ -15069,7 +15572,7 @@ RectTransform:
   m_Children:
   - {fileID: 8292886593563432003}
   m_Father: {fileID: 5937661528918436544}
-  m_RootOrder: 8
+  m_RootOrder: 7
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 1}
@@ -15208,13 +15711,13 @@ RectTransform:
   - {fileID: 7614934389744500225}
   - {fileID: 3996751866356890438}
   - {fileID: 8353630631165453099}
-  m_Father: {fileID: 5937661528918436544}
-  m_RootOrder: 2
+  m_Father: {fileID: 4314881067965048231}
+  m_RootOrder: 5
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
   m_AnchorMax: {x: 1, y: 0}
-  m_AnchoredPosition: {x: 0, y: 22.5}
-  m_SizeDelta: {x: 0, y: 45}
+  m_AnchoredPosition: {x: 810.03, y: -44.51526}
+  m_SizeDelta: {x: 1620.0554, y: 45}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &3852933177492169861
 CanvasRenderer:
@@ -16653,6 +17156,81 @@ MonoBehaviour:
   mGUI_ShowCallback: 0
   mLocalizeTarget: {fileID: 0}
   mLocalizeTargetName: I2.Loc.LocalizeTarget_UnityUI_Text
+--- !u!1 &8379960974191125264
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4690495068339113261}
+  - component: {fileID: 8728202948493801089}
+  - component: {fileID: 1078392566116001477}
+  m_Layer: 5
+  m_Name: Icon
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4690495068339113261
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8379960974191125264}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 1457252525369314623}
+  m_Father: {fileID: 5270166560972114613}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0.5}
+  m_AnchorMax: {x: 0, y: 0.5}
+  m_AnchoredPosition: {x: 20, y: 0}
+  m_SizeDelta: {x: 19, y: 18}
+  m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &8728202948493801089
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8379960974191125264}
+  m_CullTransparentMesh: 0
+--- !u!114 &1078392566116001477
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8379960974191125264}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: 2c07f9270e2471a47b36a31f1392ba9a, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
 --- !u!1 &8388804362385496921
 GameObject:
   m_ObjectHideFlags: 0