Unity/Unity 리서치

유니티 싱클톤(Singleton) 구현

lipnus 2022. 1. 23. 17:04
반응형
public class Singleton<T> : MonoBehaviour where T : MonoBehaviour 
{
    private static T instance;
    public static T Instance
    {
        get {
            if(instance == null) {
                GameObject obj;
                obj = GameObject.Find(typeof(T).Name);
                if (obj == null) {
                    obj = new GameObject(typeof(T).Name);
                    instance = obj.AddComponent<T>();
                }
                else {
                    instance = obj.GetComponent<T>();
                }

            }
            return instance;
        }
    }

    public void Awake()
    {
        DontDestroyOnLoad(gameObject);
    }
}

 

public class GameDataManager : Singleton<GameDataManager>, IFirebaseDataListener
{
	// ...

자손 클래스에서 이런식으로 상속해서 사용

 

 

 

[주의할점]

자손 코드에서 Awake를 Hide해서 DontDestroyOnLoad(gameObject)가 실행되지 않게 되면 싱글톤이 제대로구현되지 않음

반응형