Unity Lifecycle

용준·2023년 8월 21일
0

Unity

목록 보기
1/19
  • 생명주기(Lifecycle)는 게임 오브젝트의 생성부터 소멸까지의 단계를 나타내는 개념입니다.

라이프사이클(생명주기)

공식 사진

간단한 버전


실행순서

※ ChatGPT가 작성한 것에 몇가지 추가 및 수정

  1. Awake: 게임 오브젝트가 생성되면 가장 먼저 호출되는 메서드입니다.
    이 단계에서는 게임 오브젝트가 초기화되고 필요한 컴포넌트들이 설정됩니다.

  2. OnEnable: Awake 다음으로 호출되는 메서드로 게임 오브젝트가 활성화될 때마다 호출됩니다.
    이 단계에서는 주로 오브젝트 활성화 시 초기화 작업이나 리소스 할당 등이 수행됩니다.

  3. Start: Awake와 OnEnable이 호출된 후에 한 번 호출되는 메서드입니다. 주로 초기 설정 및 리소스 로딩과 같은 작업을 수행하는데 사용됩니다.

  4. Update: 게임 오브젝트가 활성화된 상태에서 매 프레임마다 호출되는 메서드입니다. 단, 프레임 호출 주기는 일정하지 않습니다.
    게임 로직 업데이트, 사용자 입력 처리, 애니메이션 업데이트 등이 여기에서 수행됩니다.

  5. FixedUpdate: 물리 엔진 업데이트 주기(Project Settings - Time - Fixed Timestep에 설정된 값)에 맞춰 호출되는 메서드로 고정된 시간 간격마다 실행됩니다.
    주로 Rigidbody 컴포넌트를 사용하는 오브젝트는 FixedUpdate에서 호출하는 것이 좋습니다.

  6. LateUpdate: 모든 Update 메서드가 호출된 후에 호출되는 메서드입니다. 다른 오브젝트의 업데이트 작업이 끝난 후에 실행되며 보통 카메라 이동과 같이 다른 오브젝트에 의존하는 작업을 처리할 때 사용됩니다.
    일정한 간격으로 호출되기 때문에 물리 엔진의 충돌 검사가 보다 정확합니다.
    주로 카메라(3인칭) 위치 조정 관련해서 사용합니다. (ex. Update (플레이어의 움직임 변화) → LateUpdate (플레이어의 변화된 움직임에 따라 카메라 위치가 이동))

  7. OnDisable: 게임 오브젝트가 비활성화될 때 호출되는 메서드입니다.
    리소스 해제나 정리 작업 등을 수행하는데 사용됩니다.

  8. OnDestroy: 게임 오브젝트가 파괴되기 직전에 호출되는 메서드입니다.
    메모리 해제나 이벤트 정리와 같은 종료 작업을 수행하는데 사용됩니다.

게임 오브젝트의 생명 주기 각 단계에서는 해당 단계에 대응하는 유니티 메서드를 오버라이딩하여 원하는 작업을 수행할 수 있습니다.
이를 통해 게임 오브젝트의 동작과 상호작용을 세밀하게 제어할 수 있습니다.


Start, Awake 차이

Awake 함수는 게임 오브젝트가 생성될 때 호출됩니다.
게임 오브젝트의 컴포넌트들이 초기화되기 전에 호출되기 때문에 다른 컴포넌트에 의존하지 않는 초기화 작업을 수행하기에 적합합니다.
주로 다른 컴포넌트와의 연결을 설정하거나 필요한 데이터를 로드하는 등의 초기 설정 작업을 수행합니다.
게임 오브젝트의 활성화 여부와 관계없이 호출됩니다.

Start 함수는 Awake 함수가 호출된 이후에 호출됩니다.
모든 Awake 함수가 호출된 후에 한 번만 호출되며 초기화 작업에 활성화된 컴포넌트와의 상호작용이 필요한 경우 주로 사용됩니다.
예를 들어 게임 오브젝트의 위치를 변경하거나 특정한 동작을 시작하는 등의 초기 게임 로직을 수행합니다.
게임 오브젝트가 활성화된 상태일 때만 호출됩니다.

요약하면
Awake 함수는 게임 오브젝트 및 컴포넌트의 초기 설정과 연결을 수행,
Start 함수는 초기 게임 로직을 수행하는 데 사용됩니다.
두 함수는 호출 순서와 초기화 목적에서 차이가 있습니다.

0개의 댓글