Unity 라이프사이클 함수 한 번에 정리 (Awake, Start, Update)
게임 만들다 보면 자연스럽게 외우게 되는 것들
Unity로 게임을 처음 만들기 시작하면
제일 먼저 마주치는 게 함수 이름들입니다.
Start, Update, OnCollisionEnter…
튜토리얼에서는 막 쓰라고 하는데,
막상 보면 이런 생각 들죠.
“이 함수는 언제 호출되는 거지?”
“이걸 왜 여기다 쓰는 거야?”
“Update에 다 때려 넣으면 안 되나…?”
저도 처음엔
일단 돌아가면 OK 마인드로 개발하다가
프레임 떨어지고, 버그 터지고 나서
그제야 함수 역할을 하나씩 이해하기 시작했습니다.
이 글에서는
Unity에서 정말 자주 쓰이는 함수들만
실제 사용 기준으로 정리해보겠습니다.
1️⃣ Start()
- 스크립트가 활성화될 때 한 번 호출
- 초기화 용도로 가장 많이 사용
보통 여기서 하는 일:
- 변수 초기값 세팅
- 컴포넌트 참조 가져오기 (GetComponent)
- 시작 시 한 번만 실행될 로직
👉 게임 시작 시 딱 한 번 실행하고 싶은 로직이면
대부분 Start()에 들어갑니다.
2️⃣ Update()
- 매 프레임마다 호출
- Unity에서 제일 많이 쓰이면서, 제일 위험한 함수
주 사용 용도:
- 키 입력 처리
- 캐릭터 이동
- 실시간 상태 체크
⚠️ 주의할 점
Update 안에 무거운 로직 넣으면
프레임 드랍 바로 옵니다.
3️⃣ FixedUpdate()
- 물리 연산 전용
- 일정한 시간 간격으로 호출
주로 쓰는 경우:
- Rigidbody 이동
- 물리 기반 캐릭터 컨트롤
👉 AddForce, velocity 조작은
Update 말고 FixedUpdate가 정석입니다.
4️⃣ LateUpdate()
- 모든 Update가 끝난 뒤 실행
- 카메라 처리에서 자주 사용
대표적인 예:
- 캐릭터 따라오는 카메라
- Update에서 변경된 값 기준 후처리
👉 “다 끝난 다음에 처리해야 하는 것”은
LateUpdate가 딱 맞습니다.
5️⃣ OnCollisionEnter()
- Collider + Rigidbody가 있을 때 충돌 발생 시 호출
- 물리 충돌 처리용
사용 예:
- 플레이어가 적과 부딪힘
- 벽에 닿았는지 체크
비슷한 함수들:
- OnCollisionStay
- OnCollisionExit
6️⃣ OnTriggerEnter()
- Trigger로 설정된 Collider 충돌 시 호출
- 물리 반응 없이 이벤트만 처리
주 사용 예:
- 아이템 획득
- 특정 구역 진입 체크
- 이벤트 트리거
👉 이벤트용 충돌 = Trigger
이건 거의 공식처럼 쓰입니다.
7️⃣ Awake()
- Start보다 먼저 호출
- 오브젝트 생성 직후 실행
주로 쓰는 경우:
- 싱글톤 패턴
- 다른 오브젝트보다 먼저 초기화해야 할 때
👉 초기화 순서가 중요하면 Awake
8️⃣ OnEnable / OnDisable
- 오브젝트 활성/비활성 시 호출
자주 쓰이는 상황:
- 이벤트 구독 / 해제
- UI 열고 닫을 때 처리
👉 UI 시스템 만들 때 생각보다 자주 쓰입니다.
정리하면 이렇게 외우면 편합니다
- Awake: 제일 먼저
- Start: 시작할 때 한 번
- Update: 매 프레임
- FixedUpdate: 물리
- LateUpdate: 마무리
- Collision / Trigger: 충돌 이벤트
처음엔 전부 외우려고 하지 말고
“아, 이럴 땐 이 함수구나” 정도만 감 잡아도 충분합니다.
마무리하며
Unity 개발하다 보면
이 함수들은 결국 몸에 익게 됩니다.
문제는
아무 생각 없이 쓰면
나중에 디버깅이 지옥이 된다는 점입니다.
이 글을 보고
“아 이건 Update에 넣으면 안 되겠네”
이 정도만 느껴져도 충분히 의미 있습니다.