using UnityEngine; using UnityEditor; using System.Collections.Generic; using System.Linq; public class GMQuickPlayingEditor : EditorWindow { private string searchText = ""; private string commandText = ""; private Vector2 scrollPosition; private List searchResults = new List(); private int itemCount = 1; [MenuItem("Tools/GM快捷工具 &9")] public static void ShowWindow() { GetWindow("GM快捷工具"); } private void OnGUI() { GUILayout.BeginVertical("box"); // 搜索栏 GUILayout.Label("物品搜索", EditorStyles.boldLabel); GUILayout.BeginHorizontal(); searchText = EditorGUILayout.TextField("搜索:", searchText); if (GUILayout.Button("查询物品", GUILayout.Width(80))) { OnSearchItem(); } GUILayout.EndHorizontal(); GUILayout.Space(10); // 搜索结果显示区域 GUILayout.BeginHorizontal(); GUILayout.Label($"搜索结果 ({searchResults.Count})", EditorStyles.boldLabel); GUILayout.FlexibleSpace(); if (GUILayout.Button("清空列表", GUILayout.Width(80))) { searchResults.Clear(); } GUILayout.EndHorizontal(); scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.Height(200)); GUILayout.BeginVertical("box"); if (searchResults.Count > 0) { foreach (var item in searchResults) { GUILayout.BeginHorizontal("box"); GUILayout.Label($"ID: {item.ID}", GUILayout.Width(80)); GUILayout.Label($"名称: {item.ItemName}", GUILayout.Width(150)); GUILayout.Label($"等级: {item.LV}", GUILayout.Width(60)); if (GUILayout.Button("选择", GUILayout.Width(60))) { OnSelectItem(item); } GUILayout.EndHorizontal(); } } else { GUILayout.Label("搜索结果将在这里显示..."); } GUILayout.EndVertical(); GUILayout.EndScrollView(); GUILayout.Space(10); // 数量输入 GUILayout.BeginHorizontal(); GUILayout.Label("物品数量:", GUILayout.Width(80)); itemCount = EditorGUILayout.IntField(itemCount, GUILayout.Width(100)); GUILayout.EndHorizontal(); GUILayout.Space(10); // GM命令编辑区域 GUILayout.Label("GM命令", EditorStyles.boldLabel); GUILayout.BeginVertical("box"); commandText = EditorGUILayout.TextArea(commandText, GUILayout.Height(60)); GUILayout.EndVertical(); GUILayout.Space(5); // 发送命令按钮 GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("发送命令", GUILayout.Width(100), GUILayout.Height(30))) { OnSendCommand(); } if (GUILayout.Button("清空", GUILayout.Width(60), GUILayout.Height(30))) { commandText = ""; } GUILayout.EndHorizontal(); GUILayout.Space(10); // 提示信息 GUIStyle warningStyle = new GUIStyle(EditorStyles.helpBox); warningStyle.normal.textColor = new Color(1f, 0.6f, 0f); warningStyle.fontSize = 11; EditorGUILayout.LabelField("⚠ 添加物品最好跟服务器确认过物品的存在后再添加", warningStyle); GUILayout.EndVertical(); } private void OnSearchItem() { searchResults.Clear(); if (string.IsNullOrEmpty(searchText)) { Debug.Log("搜索文本为空"); return; } // 遍历 ItemConfig.dic 进行模糊搜索 foreach (var kvp in ItemConfig.dic) { var item = kvp.Value; if (!string.IsNullOrEmpty(item.ItemName) && item.ItemName.Contains(searchText)) { searchResults.Add(item); } } // 按 ID 排序 searchResults = searchResults.OrderBy(x => x.ID).ToList(); Debug.Log($"搜索物品: {searchText}, 找到 {searchResults.Count} 个结果"); } private void OnSelectItem(ItemConfig item) { Debug.Log($"选择物品: {item.ItemName} (ID: {item.ID})"); commandText = $"MakeItemCount {item.ID} {itemCount}"; } private void OnSendCommand() { if (string.IsNullOrEmpty(commandText)) { Debug.LogWarning("命令为空,无法发送"); return; } Debug.Log("发送命令: " + commandText); GMCmdManager.Instance.OnSendGMQuest(commandText); GMCmdManager.Instance.SetRecordCmdlist(commandText); } }