[Unity] 싱글톤 패턴 매니저

2020. 11. 1. 22:50[Unity] 게임 개발

반응형
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Managers : MonoBehaviour
{
    static Managers s_instance; //유일성이 보장된다.
    static Managers Instance { get { Init(); return s_instance; } }

    void Start()
    {
        Init();
    }
    void Update()
    {
        _input.OnUpdate();
    }
    static void Init()
    {
        if (s_instance == null)
        {
            GameObject go = GameObject.Find("@Managers");
            if (go == null)
            {
                go = new GameObject { name = "@Managers" };
                go.AddComponent<Managers>();
            }
            DontDestroyOnLoad(go);
            s_instance = go.GetComponent<Managers>();
        }
    }
}

 

싱글톤 패턴으로 각종 매니저들을 생성해주기 전 매니저들의 매니저 생성. 

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Managers : MonoBehaviour
{
    static Managers s_instance; //유일성이 보장된다.
    static Managers Instance { get { Init(); return s_instance; } }

    InputManager _input = new InputManager();
    public static InputManager Input { get { return Instance._input; } }

    ResouceManager _resource = new ResouceManager();
    public static ResouceManager Resource { get { return Instance._resource; } }
    
    void Start()
    {
        Init();
    }

    void Update()
    {
        _input.OnUpdate();
    }
    static void Init()
    {
        if (s_instance == null)
        {
            GameObject go = GameObject.Find("@Managers");
            if (go == null)
            {
                go = new GameObject { name = "@Managers" };
                go.AddComponent<Managers>();
            }
            DontDestroyOnLoad(go);
            s_instance = go.GetComponent<Managers>();
        }
    }
}

 

그 후 사운드매니저, 게임매니저 리소스 매니저 등등 사용하고 싶은 매니저들을 관리(호출해야할때만 호출)

 

효과:  Update문에 하드코드하는 것보다 필요할때 각각의매니저를 호출 하는것으로 관리하여 효율성을 올렸다면

이번에는 각각의 매니저 또한 필요할때 호출하여 효율성을 더 높힘.

반응형