mirror of
https://github.com/OMGeeky/GameDevGameJamV2.git
synced 2025-12-29 15:55:52 +01:00
Main Menu & Pausing
This commit is contained in:
90
Assets/PauseMenuCaller.cs
Normal file
90
Assets/PauseMenuCaller.cs
Normal file
@@ -0,0 +1,90 @@
|
||||
using System.Collections;
|
||||
using System.Management.Instrumentation;
|
||||
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
|
||||
namespace OMGeeky
|
||||
{
|
||||
public class PauseMenuCaller : MonoBehaviour
|
||||
{
|
||||
private Scene mainMenuScene;
|
||||
private Canvas canvas;
|
||||
private MainMenu menu;
|
||||
private bool paused;
|
||||
public bool Paused
|
||||
{
|
||||
get => paused;
|
||||
set
|
||||
{
|
||||
paused = value;
|
||||
if ( canvas != null )
|
||||
canvas.enabled = paused;
|
||||
|
||||
Time.timeScale = value ? 0 : 1;
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerator Start()
|
||||
{
|
||||
mainMenuScene = SceneManager.GetSceneByName( "MainMenu" );
|
||||
yield return new WaitUntil( () =>
|
||||
{
|
||||
if ( mainMenuScene == null || mainMenuScene.buildIndex == -1)
|
||||
{
|
||||
mainMenuScene = SceneManager.GetSceneByName( "MainMenu" );
|
||||
if ( mainMenuScene == null || mainMenuScene.buildIndex == -1)
|
||||
SceneManager.LoadScene( "MainMenu" , LoadSceneMode.Additive );
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return mainMenuScene.IsValid() && mainMenuScene.isLoaded;
|
||||
} );
|
||||
|
||||
//
|
||||
// if ( mainMenuScene.isLoaded || !mainMenuScene.IsValid() )
|
||||
// {
|
||||
// yield return new WaitUntil( () =>
|
||||
// {
|
||||
// return !mainMenuScene.IsValid()&& mainMenuScene.isLoaded;
|
||||
// } );
|
||||
//
|
||||
// }
|
||||
|
||||
mainMenuScene = SceneManager.GetSceneByName( "MainMenu" );
|
||||
|
||||
var rootGameObjects = mainMenuScene.GetRootGameObjects();
|
||||
|
||||
// canvas = FindObjectOfType<Canvas>();
|
||||
foreach ( GameObject rootGameObject in rootGameObjects )
|
||||
{
|
||||
if ( !rootGameObject.TryGetComponent( out canvas ) )
|
||||
canvas = rootGameObject.GetComponentInChildren<Canvas>();
|
||||
|
||||
if ( canvas != null )
|
||||
break;
|
||||
}
|
||||
|
||||
if ( canvas == null )
|
||||
Debug.LogError( $"Could not find an instance of {nameof(Canvas)}" );
|
||||
|
||||
menu = canvas.GetComponentInChildren<MainMenu>();
|
||||
menu.IsPauseScreen = true;
|
||||
menu.StartGame -= menuOnStartGame;
|
||||
menu.StartGame += menuOnStartGame;
|
||||
Paused = true;
|
||||
}
|
||||
|
||||
private void menuOnStartGame() { Paused = false; }
|
||||
|
||||
void Update()
|
||||
{
|
||||
if ( Input.GetButtonDown( "Pause" ) )
|
||||
{
|
||||
Paused = !canvas.enabled;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user