|
using System; |
|
using UnityEngine; |
|
using UnityEngine.SceneManagement; |
|
|
|
namespace Unity.MLAgentsExamples |
|
{ |
|
internal class Startup : MonoBehaviour |
|
{ |
|
const string k_SceneVariableName = "SCENE_NAME"; |
|
const string k_SceneCommandLineFlag = "--mlagents-scene-name"; |
|
|
|
void Awake() |
|
{ |
|
var sceneName = ""; |
|
|
|
|
|
|
|
var args = Environment.GetCommandLineArgs(); |
|
Console.WriteLine("Command line arguments passed: " + String.Join(" ", args)); |
|
for (int i = 0; i < args.Length; i++) |
|
{ |
|
if (args[i] == k_SceneCommandLineFlag && i < args.Length - 1) |
|
{ |
|
sceneName = args[i + 1]; |
|
} |
|
} |
|
|
|
var sceneEnvironmentVariable = Environment.GetEnvironmentVariable(k_SceneVariableName); |
|
if (!string.IsNullOrEmpty(sceneEnvironmentVariable)) |
|
{ |
|
sceneName = sceneEnvironmentVariable; |
|
} |
|
|
|
SwitchScene(sceneName); |
|
} |
|
|
|
static void SwitchScene(string sceneName) |
|
{ |
|
if (sceneName == null) |
|
{ |
|
Console.WriteLine( |
|
$"You didn't specify the {k_SceneVariableName} environment variable or the {k_SceneCommandLineFlag} command line argument." |
|
); |
|
Application.Quit(22); |
|
return; |
|
} |
|
if (SceneUtility.GetBuildIndexByScenePath(sceneName) < 0) |
|
{ |
|
Console.WriteLine( |
|
$"The scene {sceneName} doesn't exist within your build." |
|
); |
|
Application.Quit(22); |
|
return; |
|
} |
|
SceneManager.LoadSceneAsync(sceneName); |
|
} |
|
} |
|
} |
|
|