유니티게임개발/기초공부

유니티(Unity)에서 싱글톤(Singleton) 디자인 패턴 사용 예시

디지털콘텐츠크리에이터 2024. 10. 11. 19:01

유니티(Unity)에서 싱글톤(Singleton) 디자인 패턴 사용 예시

싱글톤(Singleton)은 오직 하나의 인스턴스만 존재해야 하는 클래스를 만들기 위한 디자인 패턴으로 특정 클래스의 인스턴스가 중복 생성되지 않도록 제한하고 어디서든  인스턴스에 접근할 수 있습니다. 전역적으로 사용할 수 있는 매니저 클래스를 만들때 특히 유용합니다(GameManager , UIManager, AudioManager, 기타)

https://learn.unity.com/project/c-survival-guide-singletons?language=en
https://learn.unity.com/tutorial/statics-l#5c8920e7edbc2a0d28f4833c

싱글톤 사용 예시 

GameManager  클래스

public class GameManager : MonoBehaviour
{
    // 싱글톤 인스턴스
    public static GameManager instance;

    // 전역적으로 관리할 데이터들(점수, 플레이어 생명 등)
    public int playerScore = 0;

    void Awake()
    {
       
        if (instance != null && instance != this)
        {
            Destroy(gameObject);
        }
        else
        {
            instance = this;
            DontDestroyOnLoad(gameObject);
        }
    }

   
    public void AddScore(int amount)
    {
        playerScore += amount;
        Debug.Log("Player Score: " + playerScore);
    }

}

 

전역에서 접근할 수 있는 싱글톤 인스턴스로 설정합니다.
public static GameManager instance;
instance = this;


씬 전환 시에 GameManager 인스턴스가 파괴되지 않도록 설정합니다.
DontDestroyOnLoad(gameObject);


Collectible 클래스
public class Collectible : MonoBehaviour
{
    public int scoreValue = 10;

    void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
        {
            GameManager.instance.AddScore(scoreValue);
            Destroy(gameObject);
        }
    }
}

 

GameManager.instance.AddScore(scoreValue);
플레이어가 아이템을 획득하면 GameManager를 통해 점수를 추가합니다.