Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 60 additions & 8 deletions Assets/Scripts/Editor/BuildScript.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ public static class BuildScript

private static BuildPlayerOptions buildPlayerOptions;
private static List<string> errorLogMessages = new List<string>();
private static bool isSubmoduleStrippingEnabled = false;

[UsedImplicitly]
public static void BuildWithCommandlineArgs()
Expand Down Expand Up @@ -109,8 +110,12 @@ public static void Build(string[] args)
break;
}
case BuildTarget.StandaloneOSX:
#if UNITY_2021_2_OR_NEWER
PlayerSettings.SetScriptingBackend(NamedBuildTarget.Standalone, ScriptingImplementation.Mono2x);
#else
PlayerSettings.SetScriptingBackend(BuildTargetGroup.Standalone, ScriptingImplementation.Mono2x);
break;
#endif
break;
case BuildTarget.WebGL:
#if UNITY_2021_2_OR_NEWER
// Use ASTC texture compression, since we are also targeting mobile versions - Don't use this for desktop only targets
Expand Down Expand Up @@ -208,18 +213,17 @@ private static void HandleTagParameters(string tagVersion, NamedBuildTarget name
private static void HandleSubmoduleStrippingParameters(string[] tagParameters)
{
#if UNITY_6000_1_OR_NEWER
bool enableStripping = tagParameters.Contains("minsize") || tagParameters.Contains("stripping");
PlayerSettings.WebGL.enableSubmoduleStrippingCompatibility = enableStripping;
isSubmoduleStrippingEnabled = tagParameters.Contains("stripping");
PlayerSettings.WebGL.enableSubmoduleStrippingCompatibility = isSubmoduleStrippingEnabled;

if (enableStripping)
if (isSubmoduleStrippingEnabled)
{
PlayerSettings.WebGL.debugSymbolMode = WebGLDebugSymbolMode.Embedded;
}
StrippingProjectSettings.StripAutomaticallyAfterBuild = enableStripping;
Log("Web submodule stripping is set to " + enableStripping);
#else
Log("Skipping Web submodule stripping since is not supported in this Unity version");
isSubmoduleStrippingEnabled = false;
#endif
Log($"Web submodule stripping is set to {isSubmoduleStrippingEnabled}");
}

private static void SetGraphicsApi(string[] tagParameters)
Expand All @@ -228,7 +232,7 @@ private static void SetGraphicsApi(string[] tagParameters)
if (tagParameters.Contains("webgl1"))
{
#if !UNITY_2023_1_OR_NEWER
graphicsAPIs.Add(GraphicsDeviceType.OpenGLES2);
graphicsAPIs.Add(GraphicsDeviceType.OpenGLES2);
#else
LogWarning("WebGL1 not supported anymore, choosing WebGL2 instead");
graphicsAPIs.Add(GraphicsDeviceType.OpenGLES3);
Expand Down Expand Up @@ -381,6 +385,54 @@ private static void Build(BuildTarget buildTarget, string filePath)

BuildSummary buildSummary = BuildPipeline.BuildPlayer(buildPlayerOptions).summary;
ReportSummary(buildSummary);

#if UNITY_6000_1_OR_NEWER
if (buildTarget == BuildTarget.WebGL && isSubmoduleStrippingEnabled)
{
if (buildSummary.result == BuildResult.Succeeded)
{
Log("Run Submodule Stripping for WebGL build...");
var webBuild = WebBuildReportList.Instance.GetBuild(buildSummary.outputPath);

var settings = StrippingProjectSettings.ActiveSettings;
Log($"Using stripping settings {settings.name} with modules to strip: {string.Join(", ", settings.SubmodulesToStrip)}");
var successfulStripping = WebBuildProcessor.StripBuild(webBuild, settings);
if (successfulStripping)
{
Log("The build was stripped successfully.");
string functionsJsonPath = Path.Combine(buildSummary.outputPath, "Build", "functions.json");
if (File.Exists(functionsJsonPath))
{
File.Delete(functionsJsonPath);
Log($"Deleted functions.json at {functionsJsonPath}");
}
else
{
LogWarning($"Could not find file to delete: {functionsJsonPath}");
}
string labelsJsonPath = Path.Combine(buildSummary.outputPath, "Build", "labels.json");
if (File.Exists(labelsJsonPath))
{
File.Delete(labelsJsonPath);
Log($"Deleted labels.json at {labelsJsonPath}");
}
else
{
LogWarning($"Could not find file to delete: {labelsJsonPath}");
}
}
else
{
LogError("Failed to strip the build.");
}
}
else
{
LogWarning("Skipping WebGL submodule stripping, since build failed.");
}
}
#endif

ExitWithResult(buildSummary.result);
}

Expand Down
4 changes: 2 additions & 2 deletions ProjectSettings/ProjectVersion.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
m_EditorVersion: 6000.1.7f1
m_EditorVersionWithRevision: 6000.1.7f1 (13a8ffad9172)
m_EditorVersion: 6000.1.11f1
m_EditorVersionWithRevision: 6000.1.11f1 (9b156bbbd4df)