using System; using System.Collections; using UnityEditor.SceneManagement; using UnityEngine.SceneManagement; namespace UnityEditor.TestTools.TestRunner.TestRun.Tasks.Scene { internal class RemoveAdditionalUntitledSceneTask : TestTaskBase { internal Func GetSceneCount = () => SceneManager.sceneCount; internal Func GetSceneAt = i => new SceneWrapper(SceneManager.GetSceneAt(i)); internal Func CloseScene = (scene, remove) => EditorSceneManager.CloseScene(scene.WrappedScene, remove); public override IEnumerator Execute(TestJobData testJobData) { var sceneCount = GetSceneCount(); if (sceneCount <= 1) { yield break; } for (int i = 0; i < sceneCount; i++) { var scene = GetSceneAt(i); if (string.IsNullOrEmpty(scene.path)) { CloseScene(scene, true); yield break; } } } } }