프로젝트 일지/Unity

[Unity/TIL] 싱글톤 매니저 관리

톰마토 2025. 4. 10. 21:36

이번 프로젝트에서는 싱글톤 매니저의 관리 방식을 다르게 한다. 원래 내가 사용하던 방식은 제네릭 싱글톤 클래스를 만들고, 싱글톤으로 만들어져야 하는 매니저 클래스들이 그 싱글톤 클래스를 상속받는 방식이었다. 

 

이번에는 통합 Managers에서 모든 매니저를 관리해주는 방식을 사용하기로 했다. 이렇게 관리했을 때 매니저 클래스들의 초기화 순서를 지정할 수 있다는 점이 큰 장점으로 느껴졌다. 매니저 클래스를 개별 관리할 때 의존성 순서가 꼬이면 골치아팠기 때문에 이 방식이 마음에 들었다!

using System.Resources;
using UnityEditor.EditorTools;
using UnityEngine;

public class Managers : MonoBehaviour
{
    public static Managers Instance { get; private set; }
    public static readonly GameManager Game = new();
    public static readonly PoolManager Pool = new();
    public static readonly ResourceManager Resource = new();
    public static readonly SceneManager Scene = new();
    public static readonly UIManager UI = new();
    public static readonly DataManager Data = new();

    private void Awake()
    {
        if (Instance != null)
        {
            Destroy(gameObject);
            return;
        }

        Instance = this;
        DontDestroyOnLoad(this);

        Game.Initialize();
        Pool.Initialize();
        Data.Initialize();
        Scene.Initialize();
    }
}

 

다만 매니저 클래스의 개별적인 테스트가 어렵다는 단점이 있을 수 있다. 프로젝트 특징에 따라 잘 선택하살법.