mirror of
https://github.com/RHeavenStudio/HeavenStudio.git
synced 2025-06-13 11:07:38 +02:00
Editor stuff
This commit is contained in:
@ -0,0 +1,65 @@
|
||||
/// Credit Adam Kapos (Nezz) - http://www.songarc.net
|
||||
/// Sourced from - https://github.com/YousicianGit/UnityMenuSystem
|
||||
/// Updated by SimonDarksideJ - Refactored to be a more generic component
|
||||
|
||||
|
||||
namespace UnityEngine.UI.Extensions
|
||||
{
|
||||
public abstract class Menu<T> : Menu where T : Menu<T>
|
||||
{
|
||||
public static T Instance { get; private set; }
|
||||
|
||||
|
||||
protected virtual void Awake()
|
||||
{
|
||||
Instance = (T)this;
|
||||
}
|
||||
|
||||
protected virtual void OnDestroy()
|
||||
{
|
||||
Instance = null;
|
||||
}
|
||||
|
||||
protected static void Open()
|
||||
{
|
||||
GameObject clonedGameObject = null;
|
||||
if (Instance == null)
|
||||
{
|
||||
MenuManager.Instance.CreateInstance(typeof(T).Name, out clonedGameObject);
|
||||
MenuManager.Instance.OpenMenu(clonedGameObject.GetMenu());
|
||||
}
|
||||
else
|
||||
{
|
||||
Instance.gameObject.SetActive(true);
|
||||
MenuManager.Instance.OpenMenu(Instance);
|
||||
}
|
||||
}
|
||||
|
||||
protected static void Close()
|
||||
{
|
||||
if (Instance == null)
|
||||
{
|
||||
Debug.LogErrorFormat("Trying to close menu {0} but Instance is null", typeof(T));
|
||||
return;
|
||||
}
|
||||
|
||||
MenuManager.Instance.CloseMenu(Instance);
|
||||
}
|
||||
|
||||
public override void OnBackPressed()
|
||||
{
|
||||
Close();
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class Menu : MonoBehaviour
|
||||
{
|
||||
[Tooltip("Destroy the Game Object when menu is closed (reduces memory usage)")]
|
||||
public bool DestroyWhenClosed = true;
|
||||
|
||||
[Tooltip("Disable menus that are under this one in the stack")]
|
||||
public bool DisableMenusUnderneath = true;
|
||||
|
||||
public abstract void OnBackPressed();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user