SW Programming/Unity

[Unity] MonoBehaviour Flow

victoryAshe 2023. 3. 29. 18:36

📌 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의 값이 참조됨
  • 주로 물리 효과(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{...}

OnApplicationPause()

  • 게임 이탈 시: OnApplicationPause(true) 호출
  • 게임 복귀 시: OnApplicationPause(false) 호출
  • 스크립트 내에서: 위와 동일

 

Reference