라이프사이클
유니티의 각 객체에도 LifeCycle이 존재한다
using UnityEngine;
public class LifeCycle : MonoBehaviour
{
// 최초 1회
void Awake()
{
Debug.Log("플레이어 데이터가 준비되었습니다.");
}
// 활성화 함수 (키고 낄때 실행되는 함수)
void OnEnable()
{
Debug.Log("사용자가 로그인 하였습니다.");
}
void Start()
{
Debug.Log("사냥 장비를 챙겼습니다.");
}
// 물리 연산 (대략 1초에 50회, 고정된 시간)
void FixedUpdate()
{
Debug.Log("이동~");
}
// 사용자 프레임당 물리 연산 (사용자 마다 다름)
void Update()
{
Debug.Log("몬스터 사냥!!");
}
// 업데이트가 마칠때 실행
void LateUpdate()
{
Debug.Log("경험치 획득.");
}
// 비활성화 함수 (종료시 실행)
void OnDisable()
{
Debug.Log("사용자가 로그아웃 하였습니다.");
}
void OnDestroy()
{
Debug.Log("플레이어 데이터를 해제 하였습니다.");
}
}LifeCycle

초기화 단계
Awake: 최초 1회, Start 전에 실행됨
- 씬이 로드될 때 가장 먼저 실행됨
- 객체가 활성화되지 않아도 실행됨 (컴포넌트가 존재하면 실행)
- 싱글톤, 데이터 로드, 초기 설정에 적합
Start: 시작단계
- 오브젝트가 활성화된 후, 첫 프레임 전에 단 한 번 실행됨
- 초기화가 필요하지만
Awake()보다는 늦게 실행해야 할 때 사용
활성화 단계: OnEnable: 오브젝트가 활성화 될때마다 실행됨
- 오브젝트가 활성화될 때마다 실행됨
- 비활성화(
SetActive(false)) 후 다시 활성화되면 반복 실행됨
물리 연산 단계
FixedUpdate: 고정된 시간마다 함수실행 (기본값 0.02초마다 실행, Time.fixedDeltaTime 설정가능)
Time.fixedDeltaTime간격마다 실행됨 (기본 0.02초)- 물리(Rigidbody) 관련 연산은 여기서 처리해야 함
Update: 사용자의 프레임수에 맞추어 함수 실행 (사용자 마다 연산횟수 다름)
- 매 프레임 실행됨
- 프레임 속도(FPS)에 따라 실행 횟수가 다름
Time.deltaTime을 사용해 프레임 속도를 보정해야 함LateUpdate: Update()를 마칠때 실행- 모든
Update()실행 후 마지막에 실행됨 - 카메라 이동, 후처리 로직에 사용됨
게임 로직 단계
사용자가 정의한 함수 및 로직 실행
- AI 처리, 이벤트 실행, UI 업데이트 등
비활성화 단계: OnDisable: 해제 전 실행되는 함수
- 오브젝트 또는 컴포넌트가 비활성화될 때 실행됨
- 다시 활성화되면
OnEnable()이 실행됨
해제 단계
OnDestroy: 해제 시 실행되는 함수
- 게임 오브젝트가 완전히 삭제될 때 실행됨
- 오브젝트를 다시 생성하지 않는다면 메모리에서 사라짐
