참고 블로그 : 진우의 혼잣말하는 블로그
항상 씬 폴더를 찾기 귀찮았는데, 진우 형에게 좋은 것을 알게 되었다가 이번 프로젝트에 적용해 보기로 했다.
깃헙 링크에 들어가서 깃 링크를 복사한다.


해당 스크립트의 경로는 "...\Toolbar Extender\1.4.2\Scene switcher buttons\Editor"이다.
본인의 스타일에 맞게 수정을 하면 되겠다.
맨 윗단의 블로그를 참고해서, 버튼 크기만 동적으로 바뀌도록 만들어 주었다.
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
namespace UnityToolbarExtender.Examples
{
static class ToolbarStyles
{
public static readonly GUIStyle commandButtonStyle;
static ToolbarStyles()
{
commandButtonStyle = new GUIStyle("Command")
{
fontSize = 16,
alignment = TextAnchor.MiddleCenter,
imagePosition = ImagePosition.ImageAbove,
fontStyle = FontStyle.Bold
};
}
}
[InitializeOnLoad]
public class SceneSwitchLeftButton
{
static SceneSwitchLeftButton()
{
ToolbarExtender.LeftToolbarGUI.Add(OnToolbarGUI);
}
static void CreateButton(string text, string sceneName)
{
GUIContent buttonContent = new GUIContent(text);
Vector2 buttonSize = GUI.skin.button.CalcSize(buttonContent);
if (GUILayout.Button(buttonContent, GUILayout.Width(buttonSize.x), GUILayout.Height(buttonSize.y)))
{
SceneHelper.OpenScene(sceneName);
}
}
static void OnToolbarGUI()
{
GUILayout.FlexibleSpace();
string[] bntText = { "AwakeScene", "LobbyScene", "TutorialScene", "MainGameScene" };
for (int i = 0; i < bntText.Length; i++)
CreateButton(bntText[i], bntText[i]);
}
}
static class SceneHelper
{
static string sceneToOpen;
public static void OpenScene(string sceneName)
{
var saved = EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo();
if (saved)
{
_ = EditorSceneManager.OpenScene($"Assets/Scenes/{sceneName}.unity");
}
}
static void OnUpdate()
{
if (sceneToOpen == null ||
EditorApplication.isPlaying || EditorApplication.isPaused ||
EditorApplication.isCompiling || EditorApplication.isPlayingOrWillChangePlaymode)
{
return;
}
EditorApplication.update -= OnUpdate;
if(EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo())
{
string[] guids = AssetDatabase.FindAssets("t:scene " + sceneToOpen, null);
if (guids.Length == 0)
{
Debug.LogWarning("Couldn't find scene file");
}
else
{
string scenePath = AssetDatabase.GUIDToAssetPath(guids[0]);
EditorSceneManager.OpenScene(scenePath);
EditorApplication.isPlaying = true;
}
}
sceneToOpen = null;
}
}
}