반응형
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)가 실행되지 않게 되면 싱글톤이 제대로구현되지 않음
반응형
'Unity > Unity 리서치' 카테고리의 다른 글
내부클래스(Inner Class)를 Inspector창에 띄우기 (0) | 2022.01.24 |
---|---|
코드로 GameObject 동적 생성 (0) | 2022.01.23 |
Unity Sound 예제 (0) | 2022.01.22 |
[C#] DateTime 간 차이 (0) | 2022.01.08 |
VS Code Unity Debugger에 Run버튼이 없을 경우 (0) | 2022.01.05 |