该项目的目的是同时测试和演示来自 Unity DOTS 技术堆栈的多个新包。
您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

98 行
2.8 KiB

using System;
using Unity.Build;
using Unity.Build.Common;
using UnityEditor;
using UnityEngine;
public static class BuildSettingsRunner
{
static bool HasArg(string name)
{
var nameLowercase = name.ToLower();
var args = Environment.GetCommandLineArgs();
for (var i = 0; i < args.Length; i++)
{
if (args[i].ToLower() == nameLowercase)
{
return true;
}
}
return false;
}
static bool TryGetArg(string name, out string value)
{
var nameLowercase = name.ToLower();
var args = Environment.GetCommandLineArgs();
for (var i = 0; i < args.Length; i++)
{
if (args[i].ToLower() == nameLowercase && args.Length > i + 1)
{
value = args[i + 1];
return true;
}
}
value = default;
return false;
}
static bool RunBuildSettingsAtPath(string assetPath, string buildDir, bool enableIL2CPP)
{
var buildSettings = AssetDatabase.LoadAssetAtPath<BuildSettings>(assetPath);
if (buildSettings == null)
{
Debug.LogError($"No build settings found at path {assetPath}");
return false;
}
// Set build directory
buildSettings.SetComponent<OutputBuildDirectory>(new OutputBuildDirectory
{
OutputDirectory = $"{buildDir}/{buildSettings.name}"
});
if (enableIL2CPP)
{
if (buildSettings.TryGetComponent<ClassicScriptingSettings>(out var scriptingSettings))
{
Debug.Log("Overriding scripting backend to IL2CPP");
scriptingSettings.ScriptingBackend = ScriptingImplementation.IL2CPP;
buildSettings.SetComponent(scriptingSettings);
}
else
{
Debug.LogError("Attempting to enable IL2CPP but ClassicScriptingSettings component was not found");
EditorApplication.Exit(1);
}
}
var result = buildSettings.Build();
Debug.Log(result.ToString());
return result.Succeeded;
}
public static void RunBuildSettings()
{
const string buildSettingsArgName = "-a2-buildsettings";
if (!TryGetArg(buildSettingsArgName, out var path))
{
Debug.LogError($"Missing argument {buildSettingsArgName}");
EditorApplication.Exit(1);
}
if (!TryGetArg("-a2-build-dir", out var buildDir))
buildDir = "Build";
if (!RunBuildSettingsAtPath(path, buildDir, HasArg("-a2-enable-il2cpp")))
{
Debug.LogError("Build failed");
EditorApplication.Exit(1);
}
Debug.Log("Build successful");
}
}