2026-05-07 10:14:44 +02:00

58 lines
1.5 KiB
C#

using UnityEngine;
using System.Collections;
using System;
namespace Wing.Utils
{
public class MonoSingleton<T> : MonoBehaviour where T : MonoBehaviour
{
protected static bool s_bEnableAutoCreate = true;
protected static T s_pInstance;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
public virtual void Initialize()
{
}
public static T Instance
{
get
{
if (s_pInstance == null)
{
s_pInstance = GameObject.FindObjectOfType<T>();
if (s_pInstance == null && s_bEnableAutoCreate)
{
GameObject singleGO = GameObject.Find("Singletion");
if (singleGO == null)
{
singleGO = new GameObject("Singletion");
}
GameObject instanceObject = new GameObject(typeof(T).Name);
instanceObject.transform.SetParent(singleGO.transform);
s_pInstance = instanceObject.AddComponent<T>();
}
else if (s_pInstance == null)
{
//Debug.LogError("empty refrenced in this scene : " + typeof(T).Name);
}
}
return s_pInstance;
}
}
}
}