📌 Base
Awake()
- 제일 먼저, 1회만 호출됨
- GameObject가
SetActive(true)
일 때 호출됨
🌟 해당 Component가 disable되어있을 때도 호출되므로 유의할 것!
OnEnable()
- GameObject가
SetActive(true)
될 때마다 반복적으로 호출됨 - 해당 스크립트에 사용되는 값을 특정 값으로 리셋하거나 이벤트를 연결할 때 주로 쓰임
Start()
- GameObject와 해당 Component가 둘다 켜져있을 때 1회만 호출됨
Update()
- Frame 단위로 불규칙적으로 호출됨
- 가장 빈번히 사용되며, 규칙적인 움직임을 위해서 흔히
Time.deltaTime
을 같이 사용함- Time.deltaTime: 현재 frame과 이전 frame 사이의 시간(직전 frame이 완료되기까지 걸린 시간)을 return.
LateUpdate()
- Update()의 호출 이후 호출됨
- 플레이어를 따라가는 카메라의 움직임 등
Update()
의 로직 이후에 바로 호출되어야 할 때 주로 사용됨
OnDisable()
- GameObject가
SetActive(false)
될 때마다 반복적으로 호출됨 - 해당 스크립트에 사용된 이벤트를 끊는 등에 주로 쓰임
FixedUpdate() 🌟
- 설정된 값(Time.fixedDeltaTime)에 따라 일정한 간격으로 호출됨
- fixedDeltaTime: ProjectSetting의 Time 란에서 직접 바꾸거나, Script에서
Time.fixedDeltaTime
을 set해주는 것으로 바꿀 수 있음! - 📌
FixedUpdate()
내에서Time.deltaTime
을 참조해도 실제로는Time.fixedDeltaTime
의 값이 참조됨
- fixedDeltaTime: ProjectSetting의 Time 란에서 직접 바꾸거나, Script에서
- 주로 물리 효과(Rigidbody)가 적용된 GameObject 조정 시에 사용
∵ 불규칙한 호출인Update()
는 물리엔진 충돌 검사가 제대로 안될 수도 있음
📌 Others
OnBecameVisible()
- GameObject의 Renderer가 Camera View에 들어왔을 때 호출됨
OnBecameInvisible()
- GameObject의 Renderer가 Camera View에서 나갔을 때 호출됨
OnApplicationFocus()
- 게임이 처음 시작될 때
OnApplicationFocus(true)
로 1회 호출됨 - 게임 이탈 시:
OnApplicationFocus(false)
호출 - 게임 복귀 시:
OnApplicationFocus(true)
호출 - 스크립트 내에서
OnApplicationFocus()
: bool 값에 상관 없이 같은 작용을 하고자 할 때 사용OnApplicationFocus(bool value)
: bool값에 따라 다른 작용을 하고자 할 때 사용- ex)
if(value){...}else{...}
- ex)
OnApplicationPause()
- 게임 이탈 시:
OnApplicationPause(true)
호출 - 게임 복귀 시:
OnApplicationPause(false)
호출 - 스크립트 내에서: 위와 동일