티스토리 뷰

인스턴스 라이프 사이클

※ 자주 사용되는 단계는 굵게(Bold) 표시한다.

최초 씬 로드 단계

  •  Awake()
    • 프리팹 | 게임 오브젝트가 인스턴스화 된 직후에 호출된다.
    • 단, 처음 부터 비활성 상태인 경우에는 호출되지 않으며, 활성화가 되면 그 때 호출된다.
    • 주로 변수 초기화나 싱글톤 형성 같은 사전 작업을 위해서 사용된다.
      ┗ 단, 변수 초기화는 Start를 사용하는 경우가 더 많다.
  • OnEnable()
    • 오브젝트 활성화 직후 호출된다. Awake() 보다는 타이밍이 늦다.

 에디터

  • Reset
    • 스크립트가 처음으로 객체에 연결되거나 Reset 커맨드를 사용할 때, 스크립트의 속성(Property)를 초기화 하기 위해서 사용하는 함수.
  • OnValidate
    • 오브젝트가 역직렬화 될 때를 포함하여 스크립트의 속성이 설정(변경)되었을 때 호출된다.
      ※ 역직렬화(Deserialized) : 직렬화의 반대로, 단편화된 데이터를 원래 형태로 되돌리는 것을 의미한다.
         ※ 직렬화(Serialized) :  특정 데이터를 통신이나 저장이 가능한 단편적인 형태로 변환하는 것.

게임 실행

  • Start
    • 인스턴스가 활성화된 이후 첫 프레임 업데이트 전에 호출.
    • 주로 초기화나, 시작 위치 선정 등, 최초 상태의 형성을 위해서 사용된다.
  • OnApplicationPause
    • 중단이 감지된 프레임의 다음에 발생하는 함수.
    • 이 함수가 호출된 바로 다음 프레임이 issue된다.(= 화면이 멈춘다.)
    • 주로 화면에서 벗어날 경우의 행동에 대한 처리용으로 사용한다.
  • Update
    • 활성화 상태라면 매 프레임 마다 호출되는 함수. 때문에 객체의 상호작용은 거의 이 함수로 서술된다.
    • 종류가 여럿 존재한다.
      • FixedUpdate: 프레임이 아닌, 시간 단위로 발생하는 함수. 이동이나 시간에 관계된 요소에 자주 쓰인다.
      • Update: 프레임 마다 발생하는 함수. 가장 많이 사용되는 함수이기도 하다.
      • LateUpdate: Update 발생 이후 발생하는 함수. Update에서 확실한 선후 관계가 필요한 경우 사용된다.
  • Coroutine
    • 코루틴은 자신의 발동 조건(yield문 내용)이 만족됬을 때, Update가 반환된 후 실행된다.
      ┗ yield return null이 1프레임 마다 실행되는 이유이기도 하다. 기준은 Update와 동일한 타이밍이기 때문.
    • 코루틴 안에서 코루틴을 호출하여 사용할 수도 있다.
    • 단, 코루틴 자체가 가비지를 많이 생성하기 때문에 되도록이면 지양하는 것이 좋다.
  • OnEnable
    • 해당 객체가 활성화될 때 마다 호출된다.
  • OnDisable
    • 해당 객체가 비 활성화될 때 마다 호출된다.
  • OnDestroy
    • 해당 객체가 파괴될 때, 그 마지막 프레임 이후에 호출된다.
    • Object.Destroy나 씬 종료 시 액션을 작성하는 용도로 사용 가능. (대표적으로 점수 판정)

게임 종료

  • OnApplicationQuit: 어플리케이션이 종료되기 직전에 호출된다. Unity 내부 테스트 기능을 중지할 때에서 호출된다.
  • OnDisable: 비활성 상태로 전환될 때 호출된 다.

 

렌더링

  • OnPreCull: 카메라가 씬을 컬링하기 전에 호출된다.
    ※ 컬링(culling): 카메라에 표시될 오브젝트를 결정하는 연산
  • OnBecameVisible: 오브젝트가 카메라에 표시되는 경우 호출된다.
  • OnBecameInvisible: 오브젝트가 카메라에 표시되지 않을 때 호출된다.
  • OnWillRenderObject: 오브젝트가 카메라에 처음 표시될 때 호출된다. 카메라 별로 개별로 판정한다.
  • OnPreRender: 카메라가 씬 렌더링을 시작하기 전에 호출된다.
    ※ 렌더(Render): 오브젝트를 시각화 하는 것.
  • OnRenderObject: 모든 일반 렌더링이 처리된 후 호출된다.
  • OnPostRender: 카메라가 씬 렌더링을 끝낸 뒤 호출된다.
  • OnRenderImage: 씬 렌더링이 완료된 후 호출된다. 이미지의 포스트 프로세싱이 가능.
  • OnGUI: GUI 이벤트가 발생 시 호출된다. 프레임 당 여러번 발생.
  • OnDrawGizmos:씬 뷰에 기즈모를 그릴 때 사용된다.
    ┗ 기즈모(Gizmo): 테스트 등의 목적으로 특정한 형태의 추상적인 도형을 그리는 것.

 

에니메이션 업데이트 루프나 프로파일 마커에 따른 이벤트 함수도 존재하나, 이에 대해서는 [https://docs.unity3d.com/kr/current/Manual/ExecutionOrder.html]를 참고할 것.

 

 

정리하며

기존에는 간략하게 순서나 용도 만 알고 있었던 부분들을 다시금 정리하면서 다양한 사실을 알게 되었습니다.

특히 코루틴의 발생 시점을 통해 yield return null이 왜 매 프레임 바다 발동되는 것인지 알게되어, 적잖게 놀랐던 점이 인상적이었습니다.

또한, 렌더링 정도에 따른 이벤트를 통해서 화면에서 가려지는 경우나 화면에 표시되는 경우를 간편하게 구성할 수 있다는 점도 흥미로웠습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함