Unity

Unity C# 스크립트 void Start()랑 void Awake() 차이

hunhun4949 2024. 8. 20. 17:24

Unity의 C# 스크립트에서 Start()와 Awake() 메서드는 둘 다 초기화에 사용되지만, 호출 시점과 용도에 차이가 있다.

주요 차이점은 다음과 같다.

  1. 실행 순서
    • Awake() : 스크립트 인스턴스가 로딩될 때 호출된다. 모든 오브젝트의 Awake()가 호출되면 아무 Start()메서드가 호출된다.
    • Start() : 첫 프레임 업데이트 직전에 호출된다.
  2. 호출 시점
    1. Awake() : 오브젝트가 인스턴스화될 때 즉시 호출된다.스크립트가 비활성화 상태여도 호출된다.
    2. Start() : 스크립트가 활성화된 후 첫 프레임 업데이트 직전에 호출된다. 스크립트가 비활성화 상태면 호출되지 않는다.
  3. 호출 횟수
    1. Awake() : 오브젝트의 생명주기 동안 한 번만 호출된다.
    2. Start() : 스크립트가 비활성화 되었다가 다시 활성화될 때마다 호출될 수 있다.
  4. 주요 용도
    1. Awake() : 다른 스크립트의 참조를 설정하거나, 초기 설정을 수행하는데 사용된다. 특히 다른 스크립트의 Awake()에 의존하지 않는 초기화에 적합하다.
    2. Start() : 모든 Awake() 호출이 완료된 후의 초기화에 사용된다. 다른 스크립트 Awake()에 의존적인 초기화나, 게임 시작 시 한 번만 실행되어야 하는 로직에 적합하다.
  5. 코루틴
    1. Awake() : 코루틴을 시작할 수 없다.
    2. Start() : 코루틴을 시작할 수 있다.
    3. 코루틴 : 코루틴(Coroutine)은 Unity에서 제공하는 강력한 기능으로, 시간이 걸리는 작업을 여러 프레임에 걸쳐 실행할 수 있게 해주는 특별한 종류의 함수다.