using System; using System.IO; using System.Text.RegularExpressions; using UnityEngine; using UnityEditor; using UnityEditor.SceneManagement; public class PathConfig { public static readonly string ExcelPath = Application.dataPath + "/Excels/"; public static readonly string ExcelName = "LevelConfig.xlsx"; public static readonly string DataConfigPath = "Assets/Resources/Config/"; public static readonly string DataConfigName = "LevelConfig"; } public class DesignerTool : Editor { //转ScriptableObject [MenuItem("策划工具/关卡导表")] public static void CreateItemAsset() { LevelConfig tLevelCfg = CreateInstance(); tLevelCfg.DataList = ExcelParser.CreateItemArrayWithExcel(PathConfig.ExcelPath + PathConfig.ExcelName); if(!Directory.Exists(PathConfig.DataConfigPath)) { Directory.CreateDirectory(PathConfig.DataConfigPath); } string tSavePath = string.Format("{0}{1}.asset", PathConfig.DataConfigPath, PathConfig.DataConfigName); AssetDatabase.CreateAsset(tLevelCfg, tSavePath); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); } [MenuItem("策划工具/运行游戏(手摆阵容)")] public static void PlayGame1() { GameConfig.Instance.IsAutoLevel = false; RealPlay(); } [MenuItem("策划工具/运行游戏(召唤次数)")] public static void PlayGame2() { GameConfig.Instance.IsAutoLevel = true; RealPlay(); } private static void RealPlay() { GameConfig.Instance.IsDebug = true; AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); if (EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo()) { EditorSceneManager.OpenScene("Assets/Scenes/Init.unity"); } if (!EditorApplication.isPlaying) { EditorApplication.isPlaying = true; } } //转Json //[MenuItem("策划工具/关卡导Json")] //public static void CreateExcelJson() //{ // LevelConfig tLevelCfg = CreateInstance(); // tLevelCfg.DataList = ExcelParser.CreateItemArrayWithExcel(PathConfig.ExcelPath + PathConfig.ExcelName); // string tFilePath = PathConfig.DataConfigPath + PathConfig.DataConfigName + ".json"; // FileInfo tFile = new FileInfo(tFilePath); // StreamWriter tSW = tFile.CreateText(); // string tJson = JsonUtility.ToJson(tLevelCfg); // Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})"); // tJson = reg.Replace(tJson, delegate (Match m) { return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); }); // tSW.WriteLine(tJson); // tSW.Close(); // tSW.Dispose(); // AssetDatabase.Refresh(); //} }