三国卡牌客户端基础资源仓库
yyl
8 小时以前 59008ecf6cefc5088d5f984deee152f21b55d17d
编辑器GM小工具
2个文件已添加
170 ■■■■■ 已修改文件
Assets/Editor/UI/GMQuickPlayingEditor.cs 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/UI/GMQuickPlayingEditor.cs.meta 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/UI/GMQuickPlayingEditor.cs
New file
@@ -0,0 +1,159 @@
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<ItemConfig> searchResults = new List<ItemConfig>();
    private int itemCount = 1;
    [MenuItem("Tools/GM快捷工具 &9")]
    public static void ShowWindow()
    {
        GetWindow<GMQuickPlayingEditor>("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);
    }
}
Assets/Editor/UI/GMQuickPlayingEditor.cs.meta
New file
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b1a2501524447fb4a8957502b19398ce
MonoImporter:
  externalObjects: {}
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: