AxibugEmuOnline/AxibugEmuOnline.Client.Switch/Assets/AxiProjectTools/Editors/AxiAutoBuild.cs
2025-10-07 19:57:45 +08:00

118 lines
3.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#if UNITY_EDITOR
using AxibugEmuOnline.Editors;
using System;
using System.Collections.Generic;
using System.IO;
using UnityEditor;
using UnityEditor.Build.Reporting;
using UnityEngine;
public static class AxiAutoBuild
{
[MenuItem("Axibug移植工具/AutoBuild/Build ALL")]
public static void Build_Build_ALL()
{
Build_Global(BuildTarget.Android);
Build_Global(BuildTarget.iOS);
Build_Global(BuildTarget.StandaloneWindows);
Build_Global(BuildTarget.StandaloneLinux64);
Build_Global(BuildTarget.WSAPlayer);
AxibugNSPTools.BuildWithRepackNSP();
}
[MenuItem("Axibug移植工具/AutoBuild/Android")]
public static void Build_Android()
{
Build_Global(BuildTarget.Android);
}
[MenuItem("Axibug移植工具/AutoBuild/IOS")]
public static void Build_IOS()
{
Build_Global(BuildTarget.iOS);
}
[MenuItem("Axibug移植工具/AutoBuild/PC")]
public static void Build_PC()
{
Build_Global(BuildTarget.StandaloneWindows);
}
[MenuItem("Axibug移植工具/AutoBuild/Linux")]
public static void Build_Linux64()
{
Build_Global(BuildTarget.StandaloneLinux64);
}
[MenuItem("Axibug移植工具/AutoBuild/UWP")]
public static void Build_UWP()
{
Build_Global(BuildTarget.WSAPlayer);
}
[MenuItem("Axibug移植工具/AutoBuild/EmbeddedLinux")]
public static void Build_EmbeddedLinux()
{
Build_Global(BuildTarget.EmbeddedLinux);
}
[MenuItem("Axibug移植工具/AutoBuild/Switch(打包NSP并重新构建NSP")]
public static void Build_Switch()
{
AxibugNSPTools.BuildWithRepackNSP();
}
public static void Build_Global(BuildTarget target)
{
if (!EditorUtility.DisplayDialog("打包", $"确认打包{target}?", "继续", "取消"))
return;
var levels = new List<string>();
foreach (var scene in EditorBuildSettings.scenes)
{
if (scene.enabled)
levels.Add(scene.path);
}
var buildOpt = EditorUserBuildSettings.development ? BuildOptions.Development : BuildOptions.None;
if (EditorUserBuildSettings.buildWithDeepProfilingSupport)
buildOpt |= BuildOptions.EnableDeepProfilingSupport;
if (EditorUserBuildSettings.allowDebugging)
buildOpt |= BuildOptions.AllowDebugging;
string targetName = $"{Application.productName}_{DateTime.Now.ToString("yyyyMMddHHmmss")}";
targetName += target switch
{
BuildTarget.Android => ".apk",
BuildTarget.iOS => ".ipa",
BuildTarget.StandaloneWindows => ".exe",
_ => "",
};
string _locationPathName = $"Output/{target}/{targetName}";
string FullPath = Path.GetFullPath(Path.Combine(Application.dataPath, "..", _locationPathName));
string dirPath = Path.GetDirectoryName(FullPath);
if (!Directory.Exists(dirPath))
Directory.CreateDirectory(dirPath);
var options = new BuildPlayerOptions
{
scenes = levels.ToArray(),
locationPathName = _locationPathName,
target = target,
options = buildOpt
};
try
{
BuildReport report = BuildPipeline.BuildPlayer(options);
}
catch (Exception ex)
{
Debug.LogError($"[AutoBuild] Unity Build {target} 错误:{ex.ToString()}");
return;
}
}
}
#endif