C# 기초
[C#] 모노 싱글톤
입니다최원석
2023. 10. 19. 20:15
일반 싱글톤으로 매니저급 클래스를 만들 때
public class GameManager : MonoBehaviour
{
public static GameManager Instance;
private void Awake()
{
if (Instance == null)
{
Instance = this;
}
}
}
이런식으로 인스턴스를 만들어 다른 스크립트에서도 사용할 수 있게 하였다.
하지만 GameManager, SoundManager, UIManager 등등 씬에 여러개의 싱글톤이 존재할 때
위의 코드를 각각 작성해야 하는 번거로움이 생긴다.
이 문제를 해결해주는 방법이 모노 싱글톤을 사용하는 것이다.
아래는 제네릭을 사용하여 만든 모노 싱글톤 코드이다.
public class MonoSingleton<T> : MonoBehaviour where T : MonoBehaviour
{
public static T Instance { get; private set; }
private void Awake()
{
Instance = FindObjectOfType(typeof(T)) as T;
}
}
모노싱글톤을 상속받아 LevelManager와 GameManager를 만들었다.
public class LevelManager : MonoSingleton<LevelManager>
{
}
public class GameManager : MonoSingleton<GameManager>
{
public void DebugTest()
{
Debug.Log("Test");
}
}
이런식으로 모노싱글톤을 상속받아 Instance 코드를 따로따로 작성할 필요 없이 다른 스크립트에서 매니저들에 접근할 수 있다.
public class Test : MonoBehaviour
{
private void Start()
{
GameManager.Instance.DebugTest();
}
}
(출처 - 고라니TV 게임개발 채널)