유니티(Unity)에서 싱글톤(Singleton) 디자인 패턴 사용 예시
유니티(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를 통해 점수를 추가합니다.