using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using System.IO; using System.Linq; using GameEditor.Core; using GameEditor.GameEditor.PlayerBuilder; using GameLogic; using System.Diagnostics; using ResUpdate; using System.Threading; using Debug = UnityEngine.Debug; using LitJson; namespace GameEditor.FrameTool { public class ConfigWindowNew : EditorWindow { static string excelPath; //模板config 路径 static string m_ExcelPath; //config 路径 Dictionary dic; //模板config字典 Dictionary m_dic; //config字典 // Add menu named "My Window" to the Window menu [MenuItem("Build/ConfigNew")] static void Init() { m_ExcelPath = EditorPrefs.GetString("ConfigWindowNew_m_ExcelPath"); excelPath = EditorPrefs.GetString("ConfigWindowNew_ExcelPath"); // Get existing open window or if none, make a new one: ConfigWindowNew window = (ConfigWindowNew)EditorWindow.GetWindow(typeof(ConfigWindowNew)); window.Show(); } void OnGUI() { EditorGUILayout.BeginVertical(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Config模板路径:"); EditorGUILayout.BeginHorizontal(); excelPath = EditorGUILayout.TextField("", excelPath); if (GUILayout.Button("Browse", GUILayout.ExpandWidth(false))) { excelPath = EditorUtility.OpenFilePanel("Resource path", excelPath, ""); EditorPrefs.SetString("IMPORTSPINE_SOURCESFOLDERPATH", excelPath); LoadTempConfigFile(excelPath); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); EditorGUILayout.LabelField("Config文件路径:"); EditorGUILayout.BeginHorizontal(); m_ExcelPath = EditorGUILayout.TextField("", m_ExcelPath); if (GUILayout.Button("Browse", GUILayout.ExpandWidth(false))) { m_ExcelPath = EditorUtility.OpenFilePanel("Resource path", m_ExcelPath,""); EditorPrefs.SetString("IMPORTSPINE_SOURCESFOLDERPATH", m_ExcelPath); LoadConfigFile(m_ExcelPath); } EditorGUILayout.EndHorizontal(); if (m_dic != null) { InitGuiLayout(m_dic); } else if(dic != null) { InitGuiLayout(dic); } EditorGUILayout.EndVertical(); } void InitGuiLayout(Dictionary localDic) { EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("新建")) { Debug.Log("新建"); } if (GUILayout.Button("保存")) { Debug.Log("保存"); } EditorGUILayout.EndHorizontal(); EditorGUILayout.EndVertical(); } void LoadTempConfigFile(string path) { dic = new Dictionary(); StreamReader sr = File.OpenText(path); if (sr != null) { string strinfo = sr.ReadToEnd(); Debug.Log(strinfo); ReadJson(strinfo); } } static void ReadJson(string strinfo) { var data = JsonMapper.ToObject(strinfo); foreach (DictionaryEntry de in data) { Debug.Log(string.Format("{0}-{1}", de.Key, de.Value)); if (de.Value as string != null) { Debug.Log(string.Format("de.Value{0}", (de.Value as string))); } } } static void LoadConfigFile(string m_ExcelPath) { } static string shellPath; public static void OpenDirectory(string path) { if (string.IsNullOrEmpty(path)) return; if (!Directory.Exists(path)) { UnityEngine.Debug.LogError("No Directory: " + path); return; } //Application.dataPath 只能在主线程中获取 int lastIndex = Application.dataPath.LastIndexOf("/"); shellPath = Application.dataPath.Substring(0, lastIndex) + "/Shell/"; // 新开线程防止锁死 Thread newThread = new Thread(new ParameterizedThreadStart(CmdOpenDirectory)); newThread.Start(path); } private static void CmdOpenDirectory(object obj) { Process p = new Process(); #if UNITY_EDITOR_WIN p.StartInfo.FileName = "cmd.exe"; p.StartInfo.Arguments = "/c start " + obj.ToString(); #elif UNITY_EDITOR_OSX p.StartInfo.FileName = "bash"; string shPath = shellPath + "openDir.sh"; p.StartInfo.Arguments = shPath + " " + obj.ToString(); #endif //UnityEngine.Debug.Log(p.StartInfo.Arguments); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardInput = true; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.CreateNoWindow = true; p.Start(); p.WaitForExit(); p.Close(); } } }