본문 바로가기

유니티 프로그래밍

유니티에서의 C# 싱글톤 사용법 (오브젝트 객체 쉽게 가져오기)

유니티에서 객체를 찾아 오는 건 귀찮기도 하고 실수를 유발하기가 쉽다.

 

그래서 싱글톤 방식으로 불러오면 굉장히 간단하고 좋은데 사용법은 아래 코드와 같다.

 

 

UIManager.cs (UI를 관리하는 소스, 유니티 하이어라키 창의 Canvas객체에 컴포넌트로 붙여넣는 스크립트)

public class UIManager : MonoBehaviour
{
    public static UIManager I; // 이렇게 static으로 선언 후

    GameObject _backBtnObj;
    GameObject _leftBtnObj;
    GameObject _rightBtnObj;

    void Awake() // Awake는 Start 함수보다 먼저 실행됨
    {
        I = this; // 스크립트가 실행되자마자 I에 UIManager 클래스 자체를 넣어준다.
    }

    void Start()
    {
    }
}

 

 

SceneObject.cs (유니티 하이어라키창에 있는 사물 객체에 컴포넌트로 붙여준 스크립트)

public class SceneObject : MonoBehaviour
{
    void Start()
    {
    	// 선행적으로 Canvas객체에 UIManager가 드래그앤드랍이 되있어야 함
        GameObject canvas = UIManager.I.gameObject; // 이런식으로 바로 접근이 가능
		
        // 밑의 코드를 통해 Canvas 객체의 자식 객체 InfoText의 값을 가져올 수 있음
        _infoTextTrans = canvas.transform.Find("InfoText").GetComponent<RectTransform>();
    }
}