System - Managers

최강산·2023년 7월 27일
0

Managers의 역할은 각 매니저들을 하나로 묶어서 관리하면서
각 매니저들이 Managers의 Monobehaviour을 사용하여 기능을 수행하게끔 하기 위함이다.

기존에는 각 매니저마다 싱글톤과 MonoBehaviour을 달아줬었는데
그렇게 할 필요가 없다면서 교수님께서 알려주신 원 싱글턴 매니저즈 형식으로 시스템을 바꾸려고 한다.

기본적인 코드는 이러하다

코드

public class Managers : MonoBehaviour
{
    private static Managers instance;
    public static Managers Instance
    {
        get 
        {
            Init();
            return instance;
        }
    }

    private static void Init()
    {
        if(!instance)
        {
            GameObject go = GameObject.Find("@Managers");
            if(!go)
            {
                go = new GameObject { name = "@Managers" };
                go.AddComponent<Managers>();
            }

            DontDestroyOnLoad(go);
            instance = go.GetComponent<Managers>();
        }
    }

    //매니저를 추가할 자리
}

먼저 Init 함수로 Managers를 호출할 때 씬 안에 Managers가 있는지 체크한 후에 없다면
새로운 게임 오브젝트를 만들고 그 게임 오브젝트에 Managers 스크립트를 달아준 후
instance 자리에 넣어준다.

이렇게 하면 매번 귀찮게 씬 마다 새로운 스크립드를 안 넣지 않아도 자동으로 생성 되기 때문에 번거롭지 않고 편하다는 장점이 있다.

앞으로 이 매니저를 채워가는 작업을 할 것이다.

매니저를 추가하는 방법

private ResourceManager _resource = new ResourceManager();

이런 식으로 매니저를 만들면 Managers안에 Init으로 만들어질 instance를 위해 넣으면 된다.

매니저 프로퍼티 추가

    public static ResourceManager Resource { get { return Instance?._resource; } }

이렇게 전역 프로퍼티로 만들게 되면 굳이 매번
'Managers.Instance.(매니저 변수명)' 할 필요 없이 그냥
Managers.(매니저 프로퍼티명) 으로 바로 instance 접근 단계를 스킵할 수 있다.

System - Managers는 여기까지!

profile
나 왜 아직도 초보 개발자?

0개의 댓글

관련 채용 정보