| | 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); |
| | } |
| | } |
| | } |
| |
|