싱글톤은 모든 데이터를 전역으로 관리하여 쉽게 접근하는 장점이 있다.
Manager 스크립트 즉 관리를 하는 감독에서 유용하게 사용 가능한 간단한 방법이다.
//ScoreManager 싱글톤 패턴 구현
public class A : Monobehaviour
{
//싱글톤 객체
public static ScoreManager Instance = null;
//싱글톤 객체에 값이 없다면 자기 자신 할당
void Awake()
{
if(Instance == null)
{
Instance = this;
}
}
}
다음은 Get / Set 프로퍼티를 사용하는 방법이다. 객체지향 프로그래밍의 속성인 캡슐형이 바로 이 속성에 접근하는 프로퍼티이다. Get과 Set 함수의 기능은 그대로 동작하게 하고 접근은 편리하게 변수처럼 효율적인 방식이다.
선언은 변수, 몸체는 함수이다.
public class ScoreManager : MonoBehaviour
{
public static ScoreManager Instance = null;
public int Score
{
get
{
return currentScore;
}
set
{
// To do...
//클래스의 속성에 값을 할당
currentScore = value;
//화면에 현재 점수 표현하기
currentScoreUI.text = "현재 점수" + currentScore;
}
}
}
그런 다음 현재 점수를 표현하고 싶은 스크립트에 들어가 표시하면 된다.
public class Enemy : MonoBehaviour
{
//다른 물체와 충돌할때
private void OnCollisionEnter(Collision collison)
{
//에너미 잡을때마다 현재 점수 표시하고싶다
ScoreManager.Instance.Score++;
//....
}
}
ScroeManager.Instance(); 함수를 이용해 생성된 객체에 접근할 수 있다. 초기 객체 생성시 정적 메모리가 올라가기에 아주 빠르게 접근하는 장점이 있다. 하지만 정적 메모리에 할당할 수 있는 메모리 크기가 제한적이기에 프로그램이 복잡해질수록 결합도가 낮아진다. 동기화에 어려움이 있다.
'Programming skills > Unity' 카테고리의 다른 글
[Unity] 람다식과 델리게이트(delegate) (0) | 2023.10.18 |
---|---|
[Unity]Awake 와 Start의 차이 (0) | 2023.10.12 |
[Unity] 생명주기 Life Cycle (0) | 2023.10.11 |
유니티 오브젝트 생성시 하위 오브젝트로 생성하기 (0) | 2023.08.17 |
폴가이즈 베타 프로젝트 중 if문 이슈 해결 방법 (0) | 2023.06.26 |