public static void InsertAltUnityInTheFirstScene() { var altUnityRunner = UnityEditor.AssetDatabase.LoadAssetAtPath <UnityEngine.GameObject>( UnityEditor.AssetDatabase.GUIDToAssetPath(UnityEditor.AssetDatabase.FindAssets("AltUnityRunnerPrefab")[0])); PreviousScenePath = UnityEngine.SceneManagement.SceneManager.GetActiveScene().path; SceneWithAltUnityRunner = UnityEditor.SceneManagement.EditorSceneManager.OpenScene(GetFirstSceneWhichWillBeBuilt()); AltUnityRunner = UnityEditor.PrefabUtility.InstantiatePrefab(altUnityRunner); AltUnityRunner altUnityRunnerComponent = ((UnityEngine.GameObject)AltUnityRunner).GetComponent <AltUnityRunner>(); altUnityRunnerComponent.SocketPortNumber = AltUnityTesterEditor.EditorConfiguration.serverPort; altUnityRunnerComponent.requestEndingString = AltUnityTesterEditor.EditorConfiguration.requestEnding; altUnityRunnerComponent.requestSeparatorString = AltUnityTesterEditor.EditorConfiguration.requestSeparator; UnityEditor.SceneManagement.EditorSceneManager.MarkSceneDirty(UnityEngine.SceneManagement.SceneManager.GetActiveScene()); UnityEditor.SceneManagement.EditorSceneManager.SaveOpenScenes(); try { UnityEditor.SceneManagement.EditorSceneManager.OpenScene(PreviousScenePath); } catch { UnityEngine.Debug.Log("No scene was loaded yet."); } }
void Awake() { if (_altUnityRunner == null) { _altUnityRunner = this; } else { Destroy(this.gameObject); } }
private System.Collections.Generic.List <UnityEngine.GameObject> GetAllRootObjects() { System.Collections.Generic.List <UnityEngine.GameObject> objectsToCheck = new System.Collections.Generic.List <UnityEngine.GameObject>(); for (int i = 0; i < UnityEngine.SceneManagement.SceneManager.sceneCount; i++) { foreach (UnityEngine.GameObject rootGameObject in UnityEngine.SceneManagement.SceneManager.GetSceneAt(i).GetRootGameObjects()) { objectsToCheck.Add(rootGameObject); } } foreach (var destroyOnLoadObject in AltUnityRunner.GetDontDestroyOnLoadObjects()) { objectsToCheck.Add(destroyOnLoadObject); } return(objectsToCheck); }