Skip to content

Instantly share code, notes, and snippets.

@ricardj
Created January 2, 2023 19:48
Show Gist options
  • Save ricardj/d9294a5b98eda8c7c2abfa850b8c60b8 to your computer and use it in GitHub Desktop.
Save ricardj/d9294a5b98eda8c7c2abfa850b8c60b8 to your computer and use it in GitHub Desktop.
Tool for efficiently changing scene.
using System.IO;
using System.Linq;
using UnityEditor;
using UnityEditor.EditorTools;
using UnityEditor.SceneManagement;
using UnityEngine;
[EditorTool("Change Scene")]
public class ChangeSceneToEditorTool : EditorTool
{
[SerializeField]
Texture2D m_ToolIcon;
GUIContent m_IconContent;
void OnEnable()
{
m_IconContent = new GUIContent()
{
image = m_ToolIcon,
};
}
public override GUIContent toolbarIcon
{
get { return m_IconContent; }
}
public override void OnToolGUI(EditorWindow window)
{
Handles.BeginGUI();
EditorBuildSettingsScene[] editorBuildSettingsScenes = EditorBuildSettings.scenes;
editorBuildSettingsScenes.ToList().ForEach(editorScene =>
{
string sceneName = Path.GetFileNameWithoutExtension(editorScene.path);
if (GUILayout.Button(sceneName))
{
Debug.Log("Go to scene " + sceneName);
EditorSceneManager.OpenScene(editorScene.path);
}
});
Handles.EndGUI();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment