ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Unity] 유니티 생명주기 (Life Cycle)
    Unity 2022. 7. 27. 23:06

    유니티 생명주기란?

    유니티 스크립트의 대부분은 Monobehaviour클래스를 상속받아 만들어진다.

    이 클래스를 상속받은 오브젝트는 Scene에 있는 동안 엔진에서 일정한 흐름에 따라 자동을 함수를 호출하는데, 이 패턴의 흐름을 생명 주기(Life Cycle)라고 부른다.

     

    전체 흐름

    전체적인 흐름은 공식 사이트를 보면 된다.

    https://docs.unity3d.com/kr/530/Manual/ExecutionOrder.html

    하지만 너무 복잡하고 많으니 자주 사용하는 함수들만 정리하겠다.

     

    중요 흐름

     

    시작 부분

    • Awake
      • 스크립트가 실행될 때 1번만 호출된다.
      • 오브젝트가 비활성화일 경우엔 호출되지 않지만 스크립트가 비활성화일 경우엔 호출된다.
      • 생성자처럼 게임의 상태 또는 변수 초기화로 사용한다.
      • 오브젝트의 초기화 또는 프리팹의 인스턴스 화가 모두 진행된 직후 호출되기 때문에 Find 함수 호출의 안정성을 보장한다.
      • 코루틴으로 실행할 수 없다.
    • OnEnable
      • 오브젝트 또는 스크립트가 활성화될 때마다 호출된다.=
      • 코루틴으로 실행할 수 없다.
    • Reset
      • 오브젝트에 처음 연결하거나 Reset 커맨드를 사용할 때 스크립트의 프로퍼티를 초기화하기 위해 Reset을 호출한다.
    • Start
      • 스크립트가 활성화될 때 1번만 호출된다.
      • 오브젝트 또는 스크립트가 비활성화일 경우 호출되지 않는다.
      • 다른 모든 스크립트의 Awake가 모두 실행된 이후에 실행된다.
      • 코루틴으로 실행할 수 있다.

     

    핵심 부분

    • FixedUpdate
      • 고정된 프레임 주기로 호출되는 함수이다.
      • 스크립트가 활성화되어 있어야 호출된다.
    • OnTriggerXXX
      • 두 오브젝트의 충돌 체크를 하는 함수이다.
      • 물리 연산을 하지 않고 통과한다.
    • OnCollisionXXX
      • 두 오브젝트의 충돌 체크를 하는 함수이다.
      • 물리의 영향을 받으며 Rigidbody가 존재해야 한다.
    • Update
      • 매 프레임마다 호출되는 함수로 디바이스 성능이나 최적화 상황에 따라 framerate가 변하므로 함수 호출 시간이 매번 달라진다.
      • 스크립트가 활성화되어 있어야 호출된다.
    • LastUpdate
      • 모든 Update함수가 호출된 후 1번씩 호출된다.
      • 스크립트가 활성화되어 있어야 호출된다.
      • 카메라 이동 로직에 주로 사용한다.

     

    종료 부분

    • OnApplicationQuit
      • 응용 프로그램 종료 전 모든 오브젝트에서 호출된다.
    • OnDisable
      • 오브젝트 또는 스크립트가 비활성화될 때마다 호출된다.
      • 이벤트 연결 종료 시 사용한다.
      • 코루틴으로 실행할 수 없다.
    • OnDestroy
      • 오브젝트 생존 기간의 마지막 프레임이 업데이트된 후 실행된다.

    'Unity' 카테고리의 다른 글

    [Unity] Addforce  (0) 2022.08.23
    [Unity] 인스턴스화 Instantiate의 정리  (0) 2022.07.25
    [Unity] 충돌 처리 Collision / Trigger의 정리  (0) 2022.07.22
    [Unity] 코루틴(Coroutine) 정리  (0) 2022.07.21
Designed by Tistory.