added scene switcher debug menu

can be accessed at any time with the
This commit is contained in:
slevy14
2023-04-26 13:03:48 -07:00
parent 6612092d51
commit 41d128373d
10 changed files with 1760 additions and 14 deletions

View File

@@ -0,0 +1,38 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;
public class DebugSceneSwitcher : MonoBehaviour
{
void Awake() {
// check to see if a debug canvas already exists
if (GameObject.FindGameObjectWithTag("DebugCanvas") != null) {
Destroy(this.gameObject);
} else { // if it doesn't, then this is the only one
this.gameObject.tag = "DebugCanvas";
}
DontDestroyOnLoad(this.gameObject);
CreateDropdownOptions();
}
void CreateDropdownOptions() {
TMP_Dropdown sceneDropdown = GameObject.Find("SceneSwitcherDropdown").GetComponent<TMP_Dropdown>();
if (sceneDropdown.options.Count == 0) {
List<string> sceneNames = new List<string>();
for (int i = 0; i < SceneManager.sceneCountInBuildSettings; i++) {
string newName = System.IO.Path.GetFileNameWithoutExtension(SceneUtility.GetScenePathByBuildIndex(i));
print(newName);
sceneNames.Add(newName);
}
sceneDropdown.AddOptions(sceneNames);
}
}
public void ChangeScene(int index) {
// print(index);
GameObject.FindGameObjectWithTag("SceneManager").GetComponent<SceneController>().LoadChosenScene(index);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7a63068c7963048a1a15b44127dfb92f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -38,4 +38,8 @@ public class SceneController : MonoBehaviour
SceneManager.LoadScene(0); // main menu scene should be 0
}
public void LoadChosenScene(int index) {
SceneManager.LoadScene(index);
}
}

View File

@@ -15,6 +15,8 @@ public class StateController : MonoBehaviour {
public bool isPaused = false;
public GameObject pauseMenuCanvas;
GameObject debugCanvas;
void Awake() {
// check to see if a state controller already exists
if (GameObject.FindGameObjectWithTag("StateController") != null) {
@@ -24,6 +26,9 @@ public class StateController : MonoBehaviour {
}
DontDestroyOnLoad(this.gameObject);
SceneManager.sceneLoaded += OnSceneLoaded;
debugCanvas = GameObject.Find("DebugCanvas");
debugCanvas.SetActive(false);
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
@@ -44,18 +49,23 @@ public class StateController : MonoBehaviour {
if (isPaused) {
Unpause();
}
}
void OnToggleDebugMenu() {
debugCanvas.SetActive(!debugCanvas.activeSelf);
}
void OnPause() {
if (!isPaused) {
Time.timeScale = 0;
TogglePauseMenu(true);
} else {
Time.timeScale = 1;
TogglePauseMenu(false);
if (pauseMenuCanvas != null) {
if (!isPaused) {
Time.timeScale = 0;
TogglePauseMenu(true);
} else {
Time.timeScale = 1;
TogglePauseMenu(false);
}
isPaused = !isPaused;
}
isPaused = !isPaused;
}
public void Unpause() {