실감미디어/유니티
#01 초기화 함수 Awake(),Start(), OnEnable()
갬발장
2022. 10. 4. 12:43
유니티에는 개발자의 편의를 위해 정의해둔 이벤트 함수가 존재한다. 이 함수들은 사전에 정의된 순서, 특정 조건을 만족할 때 자동으로 출력된다.
Start(, Awake() 그리고 OnEnable() 함수 모두 유니티에서 지정한 함수로 초기화시 사용되는 함수이다.
모두 스크립트 실행 시 1회 공통점이 있지만 두 함수에는 분명 차이가 있기에 유니티에서 두 가지 함수를 모두 제공해주고 있다. 지금부터 그 둘을 알아보도록 하자.
1.Awake()
- 데이터를 초기화하는 목적으로 만들어진 함수
- 현재 씬이 실행된 직후 1회 호출된다.
- Awake() 메소드가 정의되어 있는 컴포넌트의 활성/ 비활성화 상태에 관계 없이 호출된다.
- 모든 오브젝트가 초기화되고 호출
- 주로 변수 선언에 사용됨
2.Start()
- 데이터를 초기화하는 목적으로 만들어진 함수
- 오브젝트가 인스턴스화 되는 시점 호출된다.(스크립트가 활성화 되어 있는 상태에서 1회 실행)
- Start() 메소드가 정의되어 있는 컴포넌트의 활성화 상태에 있을 때만 호출된다.
3. OnEnable()
- 데이터를 초기화하는 목적으로 만들어진 함수
- 컴포넌트가 비활성화되었다가 다시 활성화 될 때마다 1회 호출된다.
호출 순서 Awake() --> OnEnable() --> Start()
게임 오브젝트의 생애에 대해서 알아보자.
만약 게임 오브젝트가 처음 태어나면 (활성화) 이때는 Awake() 함수가 실행된다. Awake()함수는 게임 오브젝트의 생성 되어 제일 먼저 실행되기 때문이다. 이후에는 실행되지 않는다. 이후 Start() 함수가 실행되게 됨. 만약 스크립트를 비활성화 했다 다시 활성화하게 되면 OnEnable() 이 실행되게 되고 이후 Start()함수가 실행되게 됨.