Unity3D 제네릭(Generic)을 적용한 싱글톤 매니져 만들기


이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 2.0 대한민국 라이선스에 따라 이용할 수 있습니다.

 

singleton

제네릭 싱글톤 만들기

지난 번에 소개해 드린 싱글톤 형태로 구현을 하게되면, 매니져를 구성해서 사용할 수 있다는 장점이 있지만 문제느 매니져 클래스 마다 해당 코드를 다시 작성해야 하는 부담이 있다는 점입니다. 그 대신 아래 처럼 제네릭 매니져 클래스를 생성하고, 이를 < > 꺽쇠 괄호를 이용해서 상속하면 쉽게 사용이 가능합니다.

예제 코드를 보면서 확인해보겠습니다. 아래 스크립트 내용을 작성합니다.

 

using UnityEngine; 
using System.Collections; 

public class Singleton<T> : MonoBehaviour where T : MonoBehaviour 
{ 
    private static T _instance; 

    public static T Instance 
    { 
        get 
        { 
            if (_instance == null) 
            { 
                _instance = FindObjectOfType(typeof(T)) as T; 

                if (_instance == null) 
                { 
                    Debug.LogError("There's no active " + typeof(T) + " in this scene"); 
                } 
            } 

            return _instance; 
        } 
    } 
}

코드를 잘 보시면 <T>라고 되어 있는데, 나중에 사용할 때 T 대신에 클래스 이름을 넣어주면 됩니다.

사용하는 방법은 아래 스크립트 내용을 참고하시면 됩니다.

using UnityEngine; 
using System.Collections; 

public class ManagerClass : Singleton<ManagerClass> 
{ 

}

쉽죠? MonoBehaviour 대신에 Singleton<ManagerClass>와 같이 < > 꺽쇠 괄호 안에 해당 클래스 이름을 넣어주면, 매니져 클래스 마다 프로퍼티를 적어줄 필요가 없습니다.

다른 스크립트에서 매니져 클래스에 접근하는 방법은 지난 번과 동일 합니다. ManagerClass.Instance. 방법으로 접근하면 됩니다.

 

내용 끝까지 읽어주셔서 감사합니다.

배너 클릭은 저에게 많은 힘이 됩니다.

감사합니다 🙂

RonnieJ

프리랜서 IT강사로 활동하고 있습니다. 게임 개발, 웹 개발, 1인 기업, 독서, 책쓰기에 관심이 많습니다.

1 Response

  1. 셀이다 말해보세요:

    좋은 정보 감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다