TheInitialProject/Assets/CaoCao/Scripts/Editor/XAsset/Build/Steps/BuildPlayer.cs
2024-10-23 16:59:02 +08:00

71 lines
2.2 KiB
C#

using System;
using System.Collections.Generic;
using UnityEditor;
namespace CaoCao.Editor
{
/// <summary>
/// 打包安装包
/// </summary>
public static class BuildPlayer
{
private static string GetTimeForNow()
{
return DateTime.Now.ToString("yyyyMMddHHmmss");
}
private static string GetBuildTargetName(BuildTarget target)
{
var targetName =
$"{PlayerSettings.productName}-v{PlayerSettings.bundleVersion}-{GetTimeForNow()}";
switch (target)
{
case BuildTarget.Android:
return targetName + (EditorUserBuildSettings.buildAppBundle ? ".aab" : ".apk");
case BuildTarget.StandaloneWindows:
case BuildTarget.StandaloneWindows64:
return targetName + ".exe";
case BuildTarget.StandaloneOSX:
return targetName + ".app";
default:
return targetName;
}
}
public static void Build(string path = null)
{
if (string.IsNullOrEmpty(path))
path = $"Build/{Settings.Platform}";
var levels = new List<string>();
foreach (var scene in EditorBuildSettings.scenes)
{
if (scene.enabled)
levels.Add(scene.path);
}
if (levels.Count == 0)
{
XAsset.Logger.I("Nothing to build.");
return;
}
var buildTarget = EditorUserBuildSettings.activeBuildTarget;
var targetName = GetBuildTargetName(buildTarget);
if (targetName == null)
return;
var options = new BuildPlayerOptions
{
scenes = levels.ToArray(),
locationPathName = $"{path}/{targetName}",
target = buildTarget,
options = EditorUserBuildSettings.development
? BuildOptions.Development
: BuildOptions.None
};
BuildPipeline.BuildPlayer(options);
EditorUtility.OpenWithDefaultApp(path);
}
}
}