Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jonas-johansson/096a1110184ab821e41e91d9950ae86f to your computer and use it in GitHub Desktop.
Save jonas-johansson/096a1110184ab821e41e91d9950ae86f to your computer and use it in GitHub Desktop.
Editor window that lists scenes in editor build settings and allows user to open or play them.
using System.IO;
using System.Linq;
using UnityEngine;
using UnityEditor;
using UnityEditor.SceneManagement;
/// <summary>
/// Editor window that lists scenes in editor build settings and allows user to open or play them.
/// </summary>
public class SceneListEditorWindow : EditorWindow
{
private Vector2 scrollPosition;
[MenuItem("Window/Scene List")]
static void Init()
{
// Get existing open window or if none, make a new one.
var window = (SceneListEditorWindow)EditorWindow.GetWindow(typeof(SceneListEditorWindow));
window.titleContent = new GUIContent("Scene List");
window.Show();
}
void OnGUI()
{
var scenes = EditorBuildSettings.scenes.Where(s => s.enabled).OrderBy(s => Path.GetFileNameWithoutExtension(s.path));
scrollPosition = GUILayout.BeginScrollView(scrollPosition);
foreach (var scene in scenes)
{
GUILayout.BeginHorizontal();
// Open, Play.
GUILayout.BeginHorizontal(GUILayout.MaxWidth(100));
if (GUILayout.Button("Open"))
{
EditorSceneManager.OpenScene(scene.path);
}
if (GUILayout.Button("Play"))
{
EditorSceneManager.OpenScene(scene.path);
EditorApplication.isPlaying = true;
}
GUILayout.EndHorizontal();
// Scene name.
GUILayout.Label(Path.GetFileNameWithoutExtension(scene.path));
GUILayout.EndHorizontal();
}
GUILayout.EndScrollView();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment