#if EngineEditor using HybridCLR.Editor.Commands; using HybridCLR.Editor.Installer; using System.Collections; using System.Collections.Generic; using System.IO; using UnityEditor; using UnityEngine; namespace HybridCLR.Editor { public class BuildPlayerCommand { public static void CopyAssets(string outputDir) { Directory.CreateDirectory(outputDir); foreach(var srcFile in Directory.GetFiles(Application.streamingAssetsPath)) { string dstFile = $"{outputDir}/{Path.GetFileName(srcFile)}"; File.Copy(srcFile, dstFile, true); } } private static string[] FindEnabledEditorScenes() { List EditorScenes = new List(); foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes) { if (!scene.enabled) continue; EditorScenes.Add(scene.path); } return EditorScenes.ToArray(); } [MenuItem("HybridCLR/Build/Win64")] public static void Build_Win64() { BuildTarget target = BuildTarget.StandaloneWindows64; BuildTarget activeTarget = EditorUserBuildSettings.activeBuildTarget; if (activeTarget != BuildTarget.StandaloneWindows64 && activeTarget != BuildTarget.StandaloneWindows) { Debug.LogError("请先切到Win平台再打包"); return; } // Get filename. string outputPath = $"{SettingsUtil.ProjectDir}/Release-Win64"; var buildOptions = BuildOptions.CompressWithLz4; string location = $"{outputPath}/HybridCLRTrial.exe"; PrebuildCommand.GenerateAll(); Debug.Log("====> Build App"); BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions() { scenes = FindEnabledEditorScenes(),//new string[] { "Assets/Scenes/SimpleScene.unity" }, locationPathName = location, options = buildOptions, target = target, targetGroup = BuildTargetGroup.Standalone, }; var report = BuildPipeline.BuildPlayer(buildPlayerOptions); if (report.summary.result != UnityEditor.Build.Reporting.BuildResult.Succeeded) { Debug.LogError("打包失败"); return; } Debug.Log("====> 复制热更新资源和代码"); BuildAssetsCommand.BuildAndCopyABAOTHotUpdateDlls(); BashUtil.CopyDir(Application.streamingAssetsPath, $"{outputPath}/HybridCLRTrial_Data/StreamingAssets", true); #if UNITY_EDITOR Application.OpenURL($"file:///{location}"); #endif } } } #endif