SW 중심대학 OSS GIT 서버
박건태, 이승준, 고기완, 이준호
새로운 배포
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using UnityEngine;// ReSharper disable StaticMemberInGenericType
// ReSharper disable InconsistentNaming
namespace ARLocation.Utils{ public class Singleton<T> : MonoBehaviour where T : MonoBehaviour { // Check to see if we're about to be destroyed.
private static bool m_ShuttingDown; private static object m_Lock = new object(); private static T m_Instance;
/// <summary>
/// Access singleton instance through this propriety.
/// </summary>
public static T Instance { get { if (m_ShuttingDown) { Debug.LogWarning("[Singleton] Instance '" + typeof(T) + "' already destroyed. Returning null."); return null; }
lock (m_Lock) { if (m_Instance == null) { // Search for existing instance.
m_Instance = (T)FindObjectOfType(typeof(T));
// Create new instance if one doesn't already exist.
if (m_Instance == null) { // Need to create a new GameObject to attach the singleton to.
var singletonObject = new GameObject(); m_Instance = singletonObject.AddComponent<T>(); singletonObject.name = typeof(T) + " (Singleton)";
// Make instance persistent.
DontDestroyOnLoad(singletonObject); } }
return m_Instance; } } }
public virtual void Awake() { m_ShuttingDown = false; }
private void OnApplicationQuit() { m_ShuttingDown = true; }
private void OnDestroy() { m_ShuttingDown = true; } }}
|