diff --git a/Assets/Editor/AutoPack.cs b/Assets/Editor/AutoPack.cs new file mode 100644 index 0000000000..54068a073e --- /dev/null +++ b/Assets/Editor/AutoPack.cs @@ -0,0 +1,104 @@ +using UnityEngine; +using UnityEditor; +using System.IO; +using System; + +public class AutoPack : EditorWindow +{ + bool isObb = false; + bool isBuild = false; + bool isZs = false; + static string[] versionArr = new string[15]; + int verIndex = 0; + static string curProjectDir; + //打包数据 + [MenuItem("自动化打包/一键导出")] + private static void EzBuildPack() + { + curProjectDir = Environment.CurrentDirectory.Replace('\\', '/'); + string[] _strArr = Directory.GetFiles(curProjectDir + "/AssetBundles/", "*.txt"); + for (int i = 0; i < _strArr.Length; i++) + { + string _str = _strArr[i].Split('/')[4]; + versionArr[i] = _str; + } + Debug.Log("versionArr :" + versionArr.Length + versionArr[0]); + //创建窗口 + Rect wr = new Rect(0, 0, 400, 500); + var buildWin = GetWindowWithRect(wr, true); + buildWin.titleContent = new GUIContent("打包工具"); + buildWin.Show(); + } + + private void OnGUI() + { + EditorGUILayout.BeginVertical(); + EditorGUILayout.Space(); + EditorGUILayout.Space(); + verIndex = EditorGUILayout.Popup("选择version配置文件:", verIndex, versionArr); + EditorGUILayout.Space(); + isObb = EditorGUILayout.ToggleLeft("是否导出obb包", isObb); + isBuild = EditorGUILayout.ToggleLeft("是否需要build资源", isBuild); + isZs = EditorGUILayout.ToggleLeft("是否从正式场景导出", isZs); + EditorGUILayout.Space(); + if (GUILayout.Button("导出Android工程", GUILayout.Height(40f))) + { + Debug.Log("开始导出工程"); + string targetPath = Application.dataPath + "/Resources/version.txt"; + string copyPath = curProjectDir + "/AssetBundles/" + versionArr[verIndex]; + if (File.Exists(targetPath)) + { + File.Delete(targetPath); + } + File.Copy(copyPath, targetPath, true); + if (isBuild) + { + Debug.Log("开始build资源"); + //打包游戏 + GameEditor.FrameTool.FrameTool.BuildGameAssetBundles(); + //拷贝AssetBundle到流媒体目录 + GameEditor.FrameTool.FrameTool.CopyAssetBundleToStreamingAssets(); + //刷新资源配置 + GameEditor.ResourcesPathEditor.CreateResourcePathConfig(); + Debug.Log("完成build资源"); + } + string sceneName = "Assets/LuaFramework/Scenes/LogoHwTest.unity"; + if (isZs) + { + sceneName = "Assets/LuaFramework/Scenes/LogoHwRelease.unity"; + } + ExportAS(isObb, sceneName); + } + + } + public static void ExportAS(bool _isobb, string _sceneName) + { + PlayerSettings.productName = "ex_android_jl"; + PlayerSettings.Android.useAPKExpansionFiles = _isobb; + string outPath = "D:/exAndroid/unity_ex_as"; + if (_isobb) + { + outPath = "D:/exAndroid/unity_ex_obb"; + } + if (Directory.Exists(outPath + "/ex_android_jl")) + { + Directory.Delete(outPath + "/ex_android_jl/", true); + } + EditorUserBuildSettings.exportAsGoogleAndroidProject = true; + // 设置需要打包的场景 + string launchScene = _sceneName; + Debug.Log("打包场景:" + launchScene); + BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions(); + buildPlayerOptions.locationPathName = outPath; + buildPlayerOptions.options = BuildOptions.None; + buildPlayerOptions.options |= BuildOptions.AcceptExternalModificationsToPlayer; + buildPlayerOptions.scenes = new[] { launchScene }; + buildPlayerOptions.target = BuildTarget.Android; + // 调用开始打包 + BuildPipeline.BuildPlayer(buildPlayerOptions); + Debug.Log("导出完成"); + ///打开python工具所在路径 + GameEditor.Core.DataConfig.ConfigExportWindow.OpenDirectory("C:/Users/aaa/Desktop/pythonPack"); + + } +} diff --git a/Assets/Editor/AutoPack.cs.meta b/Assets/Editor/AutoPack.cs.meta new file mode 100644 index 0000000000..ecb1f637c8 --- /dev/null +++ b/Assets/Editor/AutoPack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7dac5b57cfa6901449b0ee731230096f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/CommandBuilder.cs b/Assets/Editor/CommandBuilder.cs new file mode 100644 index 0000000000..5c49e06360 --- /dev/null +++ b/Assets/Editor/CommandBuilder.cs @@ -0,0 +1,69 @@ +using UnityEngine; +using UnityEditor; +using System.IO; +using System; +//using System.Diagnostics; +/// +/// 安卓打包(接口都由python外部通过cmd命令调用) +/// +public class CommandBuilder : EditorWindow +{ + + public static void BuildData() + { + GameEditor.Core.DataConfig.ConfigExportWindow.PyCallBuildData(); + } + //打包资源和热更代码 + public static void BuildAssets() + { + //打包游戏 + GameEditor.FrameTool.FrameTool.BuildGameAssetBundles(); + //拷贝AssetBundle到流媒体目录 + GameEditor.FrameTool.FrameTool.CopyAssetBundleToStreamingAssets(); + //刷新资源配置 + GameEditor.ResourcesPathEditor.CreateResourcePathConfig(); + } + + public static void BuildAS() + { + string[] s = System.Environment.GetCommandLineArgs();//获取命令行参数 + //----------设置config文件----------------- + + int index = s.Length - 1; + string str = s[index]; + string[]arr = str.Split('#'); + string targetPath = Application.dataPath + "/Resources/version.txt"; + string _str = System.Environment.CurrentDirectory.Replace('\\', '/'); + string copyPath = _str + "/AssetBundles/" + arr[0]; + if (File.Exists(targetPath)) + { + File.Delete(targetPath); + } + File.Copy(copyPath, targetPath, true); + //----------设置打包场景准备导出android----------------- + PlayerSettings.productName = "ex_android_jl"; + //设置是否导出obb + PlayerSettings.Android.useAPKExpansionFiles = arr[2] == "1"; + + string outPath = "D:/exAndroid/unity_ex_as"; + if (Directory.Exists(outPath + "/ex_android_jl")) + { + Directory.Delete(outPath + "/ex_android_jl/", true); + } + EditorUserBuildSettings.exportAsGoogleAndroidProject = true; + // 设置需要打包的场景 + string launchScene = arr[1]; + Debug.Log("打包场景:" + launchScene); + BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions(); + buildPlayerOptions.locationPathName = outPath; + buildPlayerOptions.options = BuildOptions.None; + buildPlayerOptions.options |= BuildOptions.AcceptExternalModificationsToPlayer; + buildPlayerOptions.scenes = new[] { launchScene }; + buildPlayerOptions.target = BuildTarget.Android; + // 调用开始打包 + BuildPipeline.BuildPlayer(buildPlayerOptions); + + } + + +} diff --git a/Assets/Editor/CommandBuilder.cs.meta b/Assets/Editor/CommandBuilder.cs.meta new file mode 100644 index 0000000000..21fe1336d5 --- /dev/null +++ b/Assets/Editor/CommandBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9d27d235b2eeb334fb11346fc776b23b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Editor/ExcelTool/DataConfig/DataConfigWindow.cs b/Assets/Scripts/Editor/ExcelTool/DataConfig/DataConfigWindow.cs index 50c3ea39b8..610d83799b 100644 --- a/Assets/Scripts/Editor/ExcelTool/DataConfig/DataConfigWindow.cs +++ b/Assets/Scripts/Editor/ExcelTool/DataConfig/DataConfigWindow.cs @@ -29,7 +29,14 @@ namespace GameEditor.Core.DataConfig win.titleContent = new GUIContent("Export"); win.Show(); } - + //提供给打包工具调用的一键导表接口 + public static void PyCallBuildData() + { + string[] s = System.Environment.GetCommandLineArgs();//获取命令行参数 + int _index = s.Length - 1; + // 导表 + DataConfigWindow.excelALLConfig(false, "E:/Git/data_execl/" + s[_index] + "/base_data"); + } private static void LoadDic() {