[TIL] 유니티 스크립트 생명주기

Dreamer·2024년 10월 28일

1. 오늘 주제

오늘은 수준별 학습 과제에서 유니티 개발하면서 생각해 볼만한 문제가 나왔었는데, 여러가지 생각해보다가 스크립트 생명주기에 대해 한번쯤은 짚어보고 넘어가는게 좋을 것 같아서 작성해본다.

2. 실행 순서

우리가 흔히 사용하는 Component 스크립트가 어떤식으로 시작되고 어떻게 파괴되는지 알아야 개발하면서 에러를 발생시키지 않을 수 있기때문에 반드시 숙지할 필요가 있다.

3. 중요한 함수들

  1. 스크립트의 최우선 실행 함수는 Awake 함수이며, 주로 변수 초기화 할때 많이 사용한다. 특징으로는 비활성 상태에서도 한번은 실행한다.
  2. OnEnable 함수는 오브젝트가 활성 상태가 될때마다 실행된다. 비활성 상태로 전환 후 다시 활성상태로 변경해도 실행하게 된다.
  3. Start 함수는 오브젝트가 활성화된 후 첫번째 프레임에서 딱 한번만 호출한다. 특징으로는 다른 컴포넌트들이 모두 초기화 된 후에 실행되는 특징이 있다. Awake와 비슷한 것 같지만 게임 시작시 한 번만 호출 된다는 점이 다르다.
  4. FixedUpdate 함수는 고정된 시간 간격마다 호출하며, 물리 연산시에 주로 사용된다. 일정 시간을 주기로 호출하기 때문에 Rigidbody 같은 물리적 동작을 제어하는데 적합하다.
  5. Update 함수는 매 프레임마다 호출한다. 주로 사용자 입력이나 게임 로직을 처리하는데 사용되는데 캐릭터의 움직임 처리할 때나 실시간으로 데이터를 처리할 때 사용한다.
  6. LateUpdate 함수는 Update가 실행 후 프레임마다 호출되는 함수이다. Update에서 처리하고난 이후에 후처리 로직이 필요할때 사용하게 된다. 주로 사용하는 곳은 카메라의 움직임을 오브젝트에 맞추거나 오브젝트의 업데이트가 끝난 후 조정을 할때 사용한다.
  7. OnDisable 함수는 오브젝트가 비활성 상태로 전환할때 사용한다. 주로 이벤트 리스너 제거나 정리 작업에 사용한다. OnEnable과 반대로 동작하는 것이 특징이다.
  8. OnDestroy 함수는 오브젝트가 씬에서 삭제되거나 씬이 변경 될때 호출한다. 자원을 해제하는 경우에 사용한다. 사용중인 리소스를 해제 할때 사용한다.

MonoBegavior 스크립트의 전체 흐름

  1. Awake() → OnEnable() (오브젝트 활성화 시) → Start() (첫 프레임에서 딱 한 번만)
  2. (프레임마다) FixedUpdate() → Update() → LateUpdate()
  3. OnDisable() (오브젝트 비활성화 시)
  4. OnDestroy() (오브젝트 삭제 시)

지금처럼 전반적인 흐름을 파악해두면 개발하는데 꼬이는 일이 없다!

profile
새로운 시작

0개의 댓글