using ET; using GFGGame; using System; using System.IO; using System.Threading; using UnityEditor; using UnityEditor.Compilation; using UnityEngine; using VEngine.Editor.Builds; namespace GFGEditor { public class ToolsMenu : Editor { public static bool CommitWhenRelease = true; enum TOOL_MENU_PRIORITY { UpdateAndImportAll, UpdateAndImportExcel, UpdateAndImportArtRes, CheckExcel, BuildBundlesRes, UpdateProject, ImportExcel, AddExcel, ImportArtRes, } #if PT_TEMP || PT_DEV [MenuItem("外网/")] public static void VersionTag() { } #else [MenuItem("内网/")] public static void VersionTag() { } [MenuItem("策划/更新并导入所有", false, (int)TOOL_MENU_PRIORITY.UpdateAndImportAll)] static void UpdateAndImportAll() { UpdateProject(); UpdateAndImportArtRes(); UpdateAndImportExcel(); if (CommitWhenRelease) { CommitProject(); } } [MenuItem("策划/更新并导入Excel", false, (int)TOOL_MENU_PRIORITY.UpdateAndImportExcel)] static void UpdateAndImportExcelAndCommit() { UpdateAndImportExcel(); if (CommitWhenRelease) { CommitProject(); } } [MenuItem("策划/更新并导入美术资源", false, (int)TOOL_MENU_PRIORITY.UpdateAndImportArtRes)] static void UpdateAndImportArtResAndCommit() { UpdateAndImportArtRes(); if (CommitWhenRelease) { CommitProject(); } } [MenuItem("策划/更新至内网版本", false, (int)TOOL_MENU_PRIORITY.BuildBundlesRes)] public static void ReleaseLocalVersion() { EditorUtility.DisplayProgressBar("进度", "正在更新至内网", 1); BuildDllHelper.BuildHotUpdateDll(); BuildScript.BuildCustomBundles(new string[] { "Res", "ResIn" }, "BuildSetting"); EditorUtility.ClearProgressBar(); if (CommitWhenRelease) { CommitBundles(); } } [MenuItem("策划/其它/更新项目(会丢弃未推送内容)", false, (int)TOOL_MENU_PRIORITY.UpdateProject)] static void UpdateProject() { //关闭sqlite连接并延迟,否则sqlite文件会被占用导致不能通过命令行还原 SQLiteHelper.Instance.CloseConnection(); Thread.Sleep(1000); EditorUtility.DisplayProgressBar("进度", "正在更新项目", 1); ProcessUtil.ExcuteBat("Assets/Editor/Bat/", "updateGame.bat"); EditorUtility.ClearProgressBar(); } [MenuItem("策划/其它/导入配置表", false, (int)TOOL_MENU_PRIORITY.ImportExcel)] public static void ImportExcelNeiWang() { ImportExcel(); } [MenuItem("策划/检查配置表", false, (int)TOOL_MENU_PRIORITY.CheckExcel)] public static void CheckExcel() { EditorUtility.DisplayProgressBar("进度", "正在检查表格", 1); //检查表格部分内容 ExcelChecker.StartCheck(); EditorUtility.ClearProgressBar(); } [MenuItem("策划/其它/导入美术资源", false, (int)TOOL_MENU_PRIORITY.ImportArtRes)] public static void ImportArtResNeiWang() { ImportArtRes(); } [MenuItem("策划/其它/清除冗余文件")] public static void DeleteUnnecessaryImageNeiWang() { DeleteUnnecessaryImage(); } #endif public static void UpdateExcel() { EditorUtility.DisplayProgressBar("进度", "正在更新表格", 1); ProcessUtil.ExcuteBat("Assets/Editor/Bat/", "updateExcel.bat"); EditorUtility.ClearProgressBar(); } public static void UpdateArtRes() { EditorUtility.DisplayProgressBar("进度", "正在更新美术资源", 1); ProcessUtil.ExcuteBat("Assets/Editor/Bat/", "updateArtRes.bat", ImportArtResTool.ResRootDirName); //如果换装目录跟其他资源目录不一致,那么要再次更新换装目录 if (ImportArtResTool.ResRootDirNameDressUp != ImportArtResTool.ResRootDirName) { ProcessUtil.ExcuteBat("Assets/Editor/Bat/", "updateArtRes.bat", ImportArtResTool.ResRootDirNameDressUp); } EditorUtility.ClearProgressBar(); } static void CommitProject() { EditorUtility.DisplayProgressBar("进度", "正在提交项目", 1); ProcessUtil.ExcuteBat("Assets/Editor/Bat/", "commitGame.bat"); EditorUtility.ClearProgressBar(); } static void CommitBundles() { EditorUtility.DisplayProgressBar("进度", "正在提交Bundles", 1); ProcessUtil.ExcuteBat("Assets/Editor/Bat/", "commitBundles.bat"); EditorUtility.ClearProgressBar(); } public static void ImportArtRes() { EditorUtility.DisplayProgressBar("进度", "正在导入美术资源", 1); ImportArtResTool.Import(); EditorUtility.ClearProgressBar(); } public static void ImportExcel() { Log.ILog = new UnityLogger(); ET.Options.Instance = new ET.Options(); EditorUtility.DisplayProgressBar("进度", "正在导入表格", 1); SqliteController.Instance.dirPath = Path.Combine(Environment.CurrentDirectory, ResPathUtil.CONFIG_DIR_PATH); SqliteController.Instance.Init(false, null); SQLiteHelper.Instance.OpenConnection(); //try //{ SQLiteHelper.Instance.ClearAllTables(); CodeTemplateFactory.Init(); if (!Directory.Exists(ExcelConfig.configCodePath)) { Directory.CreateDirectory(ExcelConfig.configCodePath); } if (!Directory.Exists(ExcelConfig.configArrayCodePath)) { Directory.CreateDirectory(ExcelConfig.configArrayCodePath); } ExcelReader.WriteExcle(); ExcelReader.ReadExcel(CodeBuilder.GenerateCode); //} //catch (Exception e) //{ // throw (e.InnerException); //} //finally //{ SQLiteHelper.Instance.CloseConnection(); //} //开始扫描表格,自动生成部分数据 ExcelScanner.StartScan(); //拷贝slqlite文件至共享库 File.Copy(ResPathUtil.SQLITE_FILE_PATH, ExcelConfig.sqliteFilePathCSShare, true); AssetDatabase.Refresh(); EditorUtility.ClearProgressBar(); SQLiteHelper.Instance.CloseConnection(); } static void UpdateAndImportArtRes() { UpdateArtRes(); ImportArtRes(); } static void UpdateAndImportExcel() { UpdateExcel(); ImportExcel(); } [MenuItem("Tools/ImageClip/ImportClipImage")] public static void ImportClipImage() { ImportArtResTool.ImportClipImage(); } [MenuItem("Tools/ImageClip/ReadImagePosition")] public static void ReadImagePosition() { ImagesClip.ReadImagePosition(); } // [MenuItem("Tools/ImageClip/DeleteUnnecessaryImagePos")] // public static void DeleteUnnecessaryImagePos() // { // FileUtil.DeleteUnnecessaryImagePos(ImportArtResTool.DressUpTargetPath); // FileUtil.DeleteUnnecessaryImageMD5(new string[] { ImportArtResTool.DressUpMd5FileSaveName }); // } public static void DeleteUnnecessaryImage() { EditorUtility.DisplayProgressBar("进度", "开始清除资源", 1); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.FieldGuideIconTargetPath, new string[] { ImportArtResTool.FieldGuideIconMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.MusicTargetPath, new string[] { ImportArtResTool.MusicMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.CardMusicTargetPath, new string[] { ImportArtResTool.CardMusicMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ItemIconTargetPath, new string[] { ImportArtResTool.IconMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.DressUpTargetPath, new string[] { ImportArtResTool.BgMd5FileSaveName, ImportArtResTool.DressUpMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.NpcHeadTargetPath, new string[] { ImportArtResTool.NPCHeadMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.NpcPicTargetPath, new string[] { ImportArtResTool.PicFMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.NpcPicSTargetPath, new string[] { ImportArtResTool.PicSMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.CardBgTargetPath, new string[] { ImportArtResTool.CardBgMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.CardIconTargetPath, new string[] { ImportArtResTool.CardMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ActivityTargetPath, new string[] { ImportArtResTool.ActivityMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ActivityShow1TargetPath, new string[] { ImportArtResTool.ActivityShow1Md5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.PhotoGraphBorderTargetPath, new string[] { ImportArtResTool.PhotoGraphBorderMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.UIBgTargetPath, new string[] { ImportArtResTool.UIBgMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.TravelBgTargetPath, new string[] { ImportArtResTool.TravelBgMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.TravelRoleTargetPath, new string[] { ImportArtResTool.TravelRoleMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.HeadTargetPath, new string[] { ImportArtResTool.HeadMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.HeadBorderTargetPath, new string[] { ImportArtResTool.HeadBorderMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ActivityShow2TargetPath, new string[] { ImportArtResTool.ActivityShow2Md5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.MaterialTargetPath, new string[] { ImportArtResTool.EffectMaterialMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.TextureTargetPath, new string[] { ImportArtResTool.EffectTextureMd5FileSaveName }); EditorUtility.ClearProgressBar(); } [MenuItem("Tools/List Player Assemblies in Console")] public static void PrintAssemblyNames() { UnityEngine.Debug.Log("== Player Assemblies =="); Assembly[] playerAssemblies = CompilationPipeline.GetAssemblies(AssembliesType.Player); foreach (var assembly in playerAssemblies) { UnityEngine.Debug.Log(assembly.name); } } [MenuItem("Tools/Build/copy AOT dll", false, 0)] public static void CopyDll() { EditorUtility.DisplayProgressBar("进度", "正在拷贝", 1); BuildDllHelper.CopyAOTAssembliesToStreamingAssets(); EditorUtility.ClearProgressBar(); } [MenuItem("Tools/Build/Build Bundles Res Init")] public static void BuildBundlesResIn() { BuildScript.BuildCustomBundles(new string[] { "ResIn/Txt" }, "BuildSetting"); } [MenuItem("Tools/Build/Build Bundles All")] public static void BuildBundlesRes() { BuildDllHelper.BuildHotUpdateDll(); BuildScript.BuildCustomBundles(new string[] { "Res", "ResIn" }, "BuildSetting"); } //[MenuItem("XAssets/Versions/Copy To StreamingAssets")] [MenuItem("Tools/Build/Copy To StreamingAssets", false, 1)] public static void CopyToStreamingAssets() { BuildScript.CopyToStreamingAssets(); } [MenuItem("Tools/BuildTest/导入临时版本资源", false, 0)] public static void SetBundlesResTestDir() { try { ImportArtResTool.ResRootDirNameDressUp = "正式资源-demo1"; CommitWhenRelease = false; UpdateAndImportArtRes(); } catch (Exception e) { Log.Error(e.ToString()); ImportArtResTool.ResRootDirNameDressUp = "正式资源"; CommitWhenRelease = true; } } [MenuItem("Tools/BuildTest/导入临时版本配置", false, 1)] public static void SetBundlesExcelTestDir() { try { ImportArtResTool.ResRootDirNameDressUp = "Config-demo1"; CommitWhenRelease = false; UpdateAndImportExcel(); } catch (Exception e) { Log.Error(e.ToString()); ExcelConfig.excelsRootDirNameDressUp = "Config"; CommitWhenRelease = true; } } [MenuItem("Tools/BuildTest/发布临时版本", false, 3)] public static void BuildBundlesResTemp() { EditorUtility.DisplayProgressBar("进度", "正在发布临时版本", 1); BuildDllHelper.BuildHotUpdateDll(); BuildScript.BuildCustomBundles(new string[] { "Res", "ResIn" }, "BuildSetting1"); EditorUtility.ClearProgressBar(); } } }