81 lines
2.4 KiB
C#
81 lines
2.4 KiB
C#
|
|
using UnityEditor;
|
||
|
|
using UnityEngine;
|
||
|
|
using System;
|
||
|
|
|
||
|
|
public class BuildScript
|
||
|
|
{
|
||
|
|
public static void Build()
|
||
|
|
{
|
||
|
|
string[] scenes = EditorBuildSettings.scenes
|
||
|
|
.FindAll(scene => scene.enabled)
|
||
|
|
.ConvertAll(scene => scene.path)
|
||
|
|
.ToArray();
|
||
|
|
|
||
|
|
string buildPath = GetArg("-buildPath");
|
||
|
|
string buildTarget = GetArg("-buildTarget");
|
||
|
|
|
||
|
|
if (string.IsNullOrEmpty(buildPath))
|
||
|
|
{
|
||
|
|
Debug.LogError("Build path not specified");
|
||
|
|
EditorApplication.Exit(1);
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
BuildTarget target = ParseBuildTarget(buildTarget);
|
||
|
|
BuildOptions options = BuildOptions.None;
|
||
|
|
|
||
|
|
Debug.Log($"Starting build for {target}");
|
||
|
|
Debug.Log($"Build path: {buildPath}");
|
||
|
|
Debug.Log($"Scenes: {string.Join(", ", scenes)}");
|
||
|
|
|
||
|
|
BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions
|
||
|
|
{
|
||
|
|
scenes = scenes,
|
||
|
|
locationPathName = buildPath,
|
||
|
|
target = target,
|
||
|
|
options = options
|
||
|
|
};
|
||
|
|
|
||
|
|
var report = BuildPipeline.BuildPlayer(buildPlayerOptions);
|
||
|
|
|
||
|
|
if (report.summary.result == UnityEditor.Build.Reporting.BuildResult.Succeeded)
|
||
|
|
{
|
||
|
|
Debug.Log($"Build succeeded: {report.summary.totalSize} bytes");
|
||
|
|
EditorApplication.Exit(0);
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
Debug.LogError($"Build failed: {report.summary.result}");
|
||
|
|
EditorApplication.Exit(1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
private static string GetArg(string name)
|
||
|
|
{
|
||
|
|
string[] args = Environment.GetCommandLineArgs();
|
||
|
|
for (int i = 0; i < args.Length; i++)
|
||
|
|
{
|
||
|
|
if (args[i] == name && i + 1 < args.Length)
|
||
|
|
{
|
||
|
|
return args[i + 1];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
|
||
|
|
private static BuildTarget ParseBuildTarget(string target)
|
||
|
|
{
|
||
|
|
switch (target)
|
||
|
|
{
|
||
|
|
case "StandaloneWindows64": return BuildTarget.StandaloneWindows64;
|
||
|
|
case "StandaloneOSX": return BuildTarget.StandaloneOSX;
|
||
|
|
case "StandaloneLinux64": return BuildTarget.StandaloneLinux64;
|
||
|
|
case "Android": return BuildTarget.Android;
|
||
|
|
case "iOS": return BuildTarget.iOS;
|
||
|
|
case "WebGL": return BuildTarget.WebGL;
|
||
|
|
default:
|
||
|
|
Debug.LogWarning($"Unknown build target: {target}, using Windows64");
|
||
|
|
return BuildTarget.StandaloneWindows64;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|