싱글톤 유니티

박지예·2021년 10월 18일
0

공부

목록 보기
17/42
post-thumbnail
post-custom-banner
유니티에서 싱글톤은

게임에서 단 하나 밖에 없는 객체를 사용할 때 유용하다.

예시를 들어 설명하자

	
    	hAxis = Input.GetAxisRaw("Horizontal");
        vAxis = Input.GetAxisRaw("Vertical");

        Vector3 MoveVec = new Vector3(hAxis, vAxis, 0);
        SystemManager.Instance.Hero.ProcessInput(MoveVec);

여기 플레이어의 이동값을 받는 메서드가 있는 InputController가 있다

여기서

SystemManager.Instance.Hero.ProcessInput(MoveVec);

이 코드에 집중하자
싱글톤으로 생성된 객체를 관리하는 SystemManager 라는 코드가 있다

싱글톤 생성

static SystemManager instance = null;

    public static SystemManager Instance
    {
        get
        {

            return instance;
        }
    }

    void Awake()
    {
        if (instance != null)
        {
            Debug.LogError("SystemManager error! Singletone error");
            Destroy(gameObject);
            return;
        }

        instance = this;

    }

static 변수인 instance가 null일때(아직 할당 되지 않았을 때) 객체를 넣어줄꺼다.

플레이어 변수 불러오기

[SerializeField]
Player player;
   public Player Hero
   {
       get
       {
           return player;
       }
   }

아까 코드에서 보았던 Hero (게임 내애서 플레이어가 실제로 조종할 수 있는 오브젝트를 Hero 라고 함)함수 안에서 플레이어를 반환해준다.

인스팩터 창에서 지정해 줬다

결국!

player 스크립트의 ProcessInput 함수를 사용할 수 있게 되는 것이다.

profile
언젠간 바다로 갈거야!🐋
post-custom-banner

0개의 댓글