본문 바로가기

유니티 프로그래밍

유니티 Start() 함수가 내가 원했던 순서로 되지 않을때

다들 알다시피 유니티에는

 

상단 메뉴 - Edit - Project Manager를 통해

 

Execution Order에서 Order 순서를 정해줄 수 있는데, 이게

 

내가 원했던 순서로 간혹가다가 적용이 되지않아 원하는 게임 흐름으로 흘러가지 않을때가 있다

 

이럴 때를 위해서 실무에서는 아래와 같이

 

GameManager에서 다른 객체들에 붙은 스크립트들의 흐름을 제어 한다고 한다.

 

 

GameManager.cs

    public class GameManager : MonoBehaviour
    {
        public GameObject _canvas;
        public GameObject _world;
        UIManager _uiMgr;
        Lancer _lancer;
        Slime _slime;

        void Start()
        {
            _uiMgr = _canvas.GetComponent<UIManager>();
            _uiMgr.Init();
            _lancer = _world.transform.Find("Units/Lancer").gameObject.GetComponent<Lancer>();
            _lancer.Init();
            _slime = _world.transform.Find("Units/Slime").gameObject.GetComponent<Slime>();
            _slime.Init();
        }
    }

 

 

UIManager.cs

    public class UIManager : MonoBehaviour
    {
        public void Init()
        {
            // 초기화 할 명령들 (기존의 Start() 함수를 지우고 거기에 있어야할 명령들을 넣어주면됨)
        }
    }