[Unity] SingleTon패턴

jaehyeonLee·2024년 8월 16일
0

SinglTon패턴

class 가 SingleTon 패턴을 제대로 구현했다면 초기화 된 후에는 런타임 동안 메모리에 오직 하나의 인스턴스만 존재하게 된다.
SingleTon 클래스를 구현할 때 오직 한번만 메모리 안에 생성되어야하며 , 자기 자신과 같은 유형의 개체 인스턴스를 발견하면 즉시 없앤다.

SingleTon 패턴의 장점과 단점

장점
전역 접근 가능 : 싱글턴 패턴을 사용하여 리소스나 서비스의 전역 접근점 만들수가 있다.,
동시성 제어 : 공유 자원에 동시접근을 제한할 때 사용이 가능하다 .

단점
SingleTon 은 사용이 쉽다. 그렇기에 지나친 사용을 하게 될수가있게 되는데 이로인해 과한 의존을 불러올수가 있다.

어떻게 사용할 수 있을까

그러면 SingleTon을 어떻게 사용할 수있을까
Player 오브젝트가 있다고 생각해보자
Player 와 관련된 정보들이 들어가있을것이다. ex) HP 정보, power 정보 , exp 정보 등
이 정보들은 Scene 전환이 되더라도 런타임동안 계속 남아 있을 필요가있다.
이를 SingleTon을 이용하여 런타임동안 계속 남아있게 할수가있다.

SingleTon 구현

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

public class SingleTon<T> : MonoBehaviour where T : MonoBehaviour
{
    private static T instance;
    public static T Instance
    {
        get { return instance; }
        set { instance = value; }
    }



    protected virtual void Awake()
    {
        if (instance == null)
        {
            instance = (T)FindObjectOfType(typeof(T));
        }
        else
        {
            Destroy(gameObject);
            return;
        }
        DontDestroyOnLoad(gameObject);
    }
  


}

instance = (T)FindObjectOfType(typeof(T)); 지정한 타입의 첫번째로 로드된 오브젝트를 검색한다.
DontDestroyOnLoad(gameObject) : 이는 새로운 Scene으로 로드가 됐을대 대상 오브젝트가 제거되는 것을 막고 오브젝트의 현재 인스턴스가 Scene 사이를 전환할때도 유지가 가능하게 해준다.

profile
이재현의 필기노트

0개의 댓글