diff options
Diffstat (limited to 'Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs')
| -rw-r--r-- | Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs b/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs deleted file mode 100644 index 5feaa7a..0000000 --- a/Assets/Packages/Tayx/Graphy - Ultimate Stats Monitor/Scripts/Util/G_Singleton.cs +++ /dev/null @@ -1,135 +0,0 @@ -/* --------------------------------------- - * Sourced from: https://wiki.unity3d.com/index.php/Singleton - * Modified by: Martín Pane (martintayx@gmail.com) (@tayx94) - * Collaborators: Lars Aalbertsen (@Rockylars) - * Project: Graphy - Ultimate Stats Monitor - * Date: 07-Jul-17 - * Studio: Tayx - * - * This project is released under the MIT license. - * Attribution is not required, but it is always welcomed! - * -------------------------------------*/ - -using UnityEngine; - -namespace Tayx.Graphy.Utils -{ - /// <summary> - /// Be aware this will not prevent a non singleton constructor - /// such as `T myT = new T();` - /// To prevent that, add `protected T () {}` to your singleton class. - /// - /// As a note, this is made as MonoBehaviour because we need Coroutines. - /// </summary> - public class G_Singleton<T> : MonoBehaviour where T : MonoBehaviour - { - /* ----- TODO: ---------------------------- - * Check if we can seal this class. - * Add summaries to the variables. - * Add summaries to the functions. - * Check if we should add "private" to the Unity Callbacks. - * Fill in the missing date and author. - * --------------------------------------*/ - - #region Variables -> Private - - private static T _instance; - - private static object _lock = new object(); - - #endregion - - #region Properties -> Public - - public static T Instance - { - get - { - - if (_applicationIsQuitting) - { - //Debug.LogWarning("[Singleton] Instance '" + typeof(T) + - // "' already destroyed on application quit." + - // " Won't create again - returning null."); - return null; - } - - lock (_lock) - { - if (_instance == null) - { - _instance = (T)FindObjectOfType(typeof(T)); - - if (FindObjectsOfType(typeof(T)).Length > 1) - { - //Debug.LogError("[Singleton] Something went really wrong " + - // " - there should never be more than 1 singleton!" + - // " Reopening the scene might fix it."); - return _instance; - } - - if (_instance == null) - { - //GameObject singleton = new GameObject(); - //_instance = singleton.AddComponent<T>(); - //singleton.name = "(singleton) " + typeof(T).ToString(); - - //DontDestroyOnLoad(singleton); - - //Debug.Log("[Singleton] An instance of " + typeof(T) + - // " is needed in the scene, so '" + singleton + - // "' was created with DontDestroyOnLoad."); - - Debug.Log - ( - "[Singleton] An instance of " + typeof(T) + - " is trying to be accessed, but it wasn't initialized first. " + - "Make sure to add an instance of " + typeof(T) + " in the scene before " + - " trying to access it." - ); - } - else - { - //Debug.Log("[Singleton] Using instance already created: " + - // _instance.gameObject.name); - } - } - - return _instance; - } - } - } - - #endregion - - #region Methods -> Unity Callbacks - - void Awake() - { - if (_instance != null) - { - Destroy(gameObject); - } - else - { - _instance = GetComponent<T>(); - } - } - - private static bool _applicationIsQuitting = false; - /// <summary> - /// When Unity quits, it destroys objects in a random order. - /// In principle, a Singleton is only destroyed when application quits. - /// If any script calls Instance after it has been destroyed, - /// it will create a buggy ghost object that will stay on the Editor scene - /// even after stopping playing the Application. Really bad! - /// So, this was made to be sure we're not creating that buggy ghost object. - /// </summary> - void OnDestroy() - { - _applicationIsQuitting = true; - } - - #endregion - } -}
\ No newline at end of file |
