using ET; using GFGGame; using System; using System.IO; using System.Threading; using UnityEditor; using UnityEditor.Compilation; using UnityEngine; namespace GFGEditor { public class ToolsMenu : Editor { public static bool CommitWhenRelease = true; public static string[] resArr = new string[] { "Res", "ResIn", "Game/CSShare/Sqlite" }; enum TOOL_MENU_PRIORITY { UpdateAndImportAll, UpdateAndImportExcel, UpdateAndImportArtRes, CheckExcel, BuildBundlesRes, UpdateProject, ImportExcel, AddExcel, ImportArtRes, } #if PT_DEV [MenuItem("外网DEV/")] public static void VersionTag() { } #elif PT_DouYouDev [MenuItem("PT_DouYouDev/")] public static void VersionTag() { } #elif PT_DOUYOU [MenuItem("DouYou/")] public static void VersionTag() { } #elif PT_TAPTAP [MenuItem("TAPTAP/")] 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() { UpdateProjectRes(); UpdateAndImportArtRes(); if (CommitWhenRelease) { CommitProject(); } } //[MenuItem("策划/更新至内网版本", false, (int)TOOL_MENU_PRIORITY.BuildBundlesRes)] //public static void ReleaseLocalVersion() //{ // EditorUtility.DisplayProgressBar("进度", "正在更新至内网", 1); // BuildDllHelper.BuildHotUpdateDll(); // //BuildScript.BuildCustomBundles(resArr, "BuildSetting"); // EditorUtility.ClearProgressBar(); //} [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"); AssetDatabase.Refresh(); UpdateProjectRes(); 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 private static void UpdateProjectRes() { ProcessUtil.ExcuteBat("Assets/Editor/Bat/", "updateGameRes.bat"); } 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); DeleteFileHelper.TrySvnRemoveDeleteFile(); 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.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(); AssetDatabase.Refresh(); EditorUtility.ClearProgressBar(); SQLiteHelper.Instance.CloseConnection(); } static void UpdateAndImportArtRes() { UpdateArtRes(); ImportArtRes(); } static void UpdateAndImportExcel() { UpdateExcel(); ImportExcel(); } [MenuItem("Tools/ImageClip/TestImportClipImage")] public static void TestImportClipImage() { ImportArtResTool.Test(); } [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.ChapterGuideIconTargetPath, new string[] { ImportArtResTool.ChapterGuideIconMd5FileSaveName }); 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.CardSkillTargetPath, new string[] { ImportArtResTool.CardSkillMd5FileSaveName }); 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.LeagueIconTargetPath, new string[] { ImportArtResTool.LeagueIconMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ActivityShow2TargetPath, new string[] { ImportArtResTool.ActivityShow2Md5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.MaterialTargetPath, new string[] { ImportArtResTool.EffectMaterialMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ShaderTargetPath, new string[] { ImportArtResTool.ShaderMd5FileSaveName }); // FileUtil.DeleteUnnecessaryImage(ImportArtResTool.ModelTargetPath, new string[] { ImportArtResTool.ModelTargetPath }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.TextureTargetPath, new string[] { ImportArtResTool.EffectTextureMd5FileSaveName }); FileUtil.DeleteUnnecessaryImage(ImportArtResTool.LuckyBoxTitleImgTargetPath, new string[] { ImportArtResTool.LuckyBoxTitleImgMd5FileSaveName }); DeleteFileHelper.TrySvnRemoveDeleteFile(); 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/Font" }, "BuildSetting"); //} //[MenuItem("Tools/Build/Build Bundles All")] //public static void BuildBundlesRes() //{ // BuildDllHelper.BuildHotUpdateDll(); // BuildScript.BuildCustomBundles(resArr, "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, 1)] public static void SetBundlesExcelTestDir() { try { ExcelConfig.excelsRootDirNameDressUp = "Config-demo1"; ImportExcel(); } catch (Exception e) { Log.Error(e.ToString()); ExcelConfig.excelsRootDirNameDressUp = "Config"; } } //[MenuItem("Tools/BuildTest/发布临时版本", false, 3)] //public static void BuildBundlesResTemp() //{ // EditorUtility.DisplayProgressBar("进度", "正在发布临时版本", 1); // BuildDllHelper.BuildHotUpdateDll(); // BuildScript.BuildCustomBundles(resArr, "BuildSetting1"); // EditorUtility.ClearProgressBar(); //} [MenuItem("Tools/ClearCache")] public static void ClearCache() { PlayerPrefs.DeleteAll(); } [MenuItem("Tools/Build/BuildHotUpdateDll")] public static void BuildHotUpdateDll() { BuildDllHelper.BuildHotUpdateDll(); } [MenuItem("Tools/Build/CopyPresetAssets")] public static void CopyPresetAssets() { PresetAssetHelper.CopyPresetAssets(); } } }