|
using System; |
|
using UnityEditor; |
|
using UnityEngine; |
|
using UnityEditor.Build.Reporting; |
|
|
|
namespace Unity.MLAgents |
|
{ |
|
public class StandaloneBuildTest |
|
{ |
|
const string k_OutputCommandLineFlag = "--mlagents-build-output-path"; |
|
const string k_SceneCommandLineFlag = "--mlagents-build-scene-path"; |
|
private const string k_BuildTargetFlag = "--mlagents-build-target"; |
|
|
|
public static void BuildStandalonePlayerOSX() |
|
{ |
|
|
|
var outputPath = "testPlayer"; |
|
var scenePath = "Assets/ML-Agents/Examples/3DBall/Scenes/3DBall.unity"; |
|
var buildTarget = BuildTarget.StandaloneOSX; |
|
|
|
var args = Environment.GetCommandLineArgs(); |
|
for (var i = 0; i < args.Length - 1; i++) |
|
{ |
|
if (args[i] == k_OutputCommandLineFlag) |
|
{ |
|
outputPath = args[i + 1]; |
|
Debug.Log($"Overriding output path to {outputPath}"); |
|
} |
|
else if (args[i] == k_SceneCommandLineFlag) |
|
{ |
|
scenePath = args[i + 1]; |
|
} |
|
else if (args[i] == k_BuildTargetFlag) |
|
{ |
|
buildTarget = (BuildTarget)Enum.Parse(typeof(BuildTarget), args[i + 1], ignoreCase: true); |
|
} |
|
} |
|
|
|
string[] scenes = { scenePath }; |
|
var buildResult = BuildPipeline.BuildPlayer( |
|
scenes, |
|
outputPath, |
|
buildTarget, |
|
BuildOptions.Development |
|
); |
|
var isOk = buildResult.summary.result == BuildResult.Succeeded; |
|
var error = ""; |
|
foreach (var stepInfo in buildResult.steps) |
|
{ |
|
foreach (var msg in stepInfo.messages) |
|
{ |
|
if (msg.type != LogType.Log && msg.type != LogType.Warning) |
|
{ |
|
error += msg.content + "\n"; |
|
} |
|
} |
|
} |
|
if (isOk) |
|
{ |
|
EditorApplication.Exit(0); |
|
} |
|
else |
|
{ |
|
Console.Error.WriteLine(error); |
|
EditorApplication.Exit(1); |
|
|
|
} |
|
Debug.Log(error); |
|
|
|
} |
|
|
|
} |
|
} |
|
|