본문 바로가기
Unity/Manual

Unity 스크립트 실행 순서 Awake OnEnable Start

by Dev_카페인 2024. 6. 13.
반응형

Unity 스크립트 실행 순서 : 알아야 할 모든 것

Unity 게임 개발에서 스크립트 실행 순서를 이해하는 것은 게임이 예상대로 작동하도록 하는 데 매우 중요합니다. 이 블로그 포스트에서는 스크립트 실행 순서가 무엇인지, 어떻게 작동하는지, 그리고 게임 개발을 더 원활하고 효율적으로 만들기 위해 이를 제어하는 방법에 대해 자세히 설명합니다.

스크립트 실행 순서란?

Unity에서 스크립트 실행 순서는 프레임의 다양한 단계 동안 스크립트가 실행되는 순서를 결정합니다. 기본적으로 Unity는 특정 순서로 스크립트를 실행하지만, 스크립트 간의 상호작용을 보장하기 위해 이 순서를 사용자 정의해야 할 때가 있습니다.

기본 스크립트 실행 순서

단일 프레임에 대한 Unity의 기본 실행 순서는 일반적으로 다음 단계로 이루어집니다:

  1. 초기화
    • Awake(): 스크립트 인스턴스가 로드될 때 호출됩니다.
    • OnEnable(): 오브젝트가 활성화될 때 호출됩니다.
  2. 물리
    • FixedUpdate(): 고정 프레임 레이트 프레임마다 호출됩니다. 물리 계산에 사용됩니다.
  3. 입력 및 게임 로직
    • Update(): 프레임마다 한 번 호출됩니다. 주요 게임 로직이 여기서 발생합니다.
    • LateUpdate(): Update() 후에 호출됩니다. 후처리 계산에 사용됩니다.
  4. 렌더링
    • OnRenderObject(), OnPreRender(), OnPostRender(), OnRenderImage(): 렌더링 과정 중에 호출됩니다.
  5. 비활성화
    • OnDisable(): 동작이 비활성화되거나 비활성 상태가 될 때 호출됩니다.
    • OnDestroy(): MonoBehaviour가 파괴될 때 호출됩니다.

스크립트 실행 순서 사용자 정의

Unity에서는 스크립트 실행 순서를 몇 가지 방법으로 사용자 정의할 수 있습니다:

1. 스크립트 실행 순서 설정

Unity는 스크립트 실행 순서를 수동으로 설정할 수 있는 기능을 제공합니다.

  • 스크립트 실행 순서 설정 방법:
    1. Edit > Project Settings > Script Execution Order로 이동합니다.
    2. + 버튼을 클릭하여 스크립트를 추가합니다.
    3. 스크립트를 원하는 순서 위치로 드래그합니다.
    4. 실행 순서 값을 설정합니다(값이 낮을수록 먼저 실행됨).

2. 실행 순서 속성 사용

Unity는 스크립트 내에서 실행 순서를 강제할 수 있는 속성을 제공합니다. 자주 사용되는 속성은 다음과 같습니다:

  • [DefaultExecutionOrder(int order)]: 스크립트의 실행 순서를 지정합니다.
[DefaultExecutionOrder(-100)]
public class MyScript : MonoBehaviour
{
    void Awake()
    {
        Debug.Log("Awake called");
    }

    void Start()
    {
        Debug.Log("Start called");
    }
}

3. 의존성 관리

여러 스크립트가 서로 의존하는 경우, 적절한 실행 순서를 설정하여 논리적 순서를 따르도록 합니다. 예를 들어, ScriptB가 ScriptA의 데이터를 필요로 하는 경우 ScriptA가 먼저 실행되도록 설정합니다.

스크립트 실행 순서 최적화 팁

  1. 미리 계획하기: 사용자 정의 실행 순서를 설정하기 전에 스크립트 의존성을 계획하여 충돌을 피합니다.
  2. 간단하게 유지하기: 필요할 때만 사용자 정의 실행 순서를 설정합니다. 과도하게 복잡하게 만드는 것은 유지 관리에 어려움을 초래할 수 있습니다.
  3. 싱글톤 패턴 사용: 매니저 및 서비스를 위해 싱글톤 패턴을 사용하여 초기화 및 접근을 제어합니다.

일반적인 문제 해결

  1. Null 참조 오류: 의존성이 사용되기 전에 초기화되었는지 확인합니다.
  2. 일관되지 않은 동작: Script Execution Order 설정을 사용하여 프레임 간의 일관된 동작을 보장합니다.
  3. 성능: 물리 계산이 아닌 경우 FixedUpdate() 사용을 최소화하여 성능을 최적화합니다.

결론

Unity에서 스크립트 실행 순서를 이해하고 제어하는 것은 안정적이고 신뢰할 수 있는 게임을 개발하는 데 필수적입니다. Script Execution Order 설정 및 속성을 활용하여 스크립트가 올바른 순서로 실행되도록 하여 일반적인 문제를 피하고 게임의 전체적인 품질을 향상시킬 수 있습니다.

 

 

이벤트 함수의 실행 순서 - Unity 매뉴얼

Unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행됩니다. 이 페이지에서는 이러한 이벤트 함수를 소개하고 실행 시퀀스에 어떻게 포함되는지 설명합니다.

docs.unity3d.com

 

반응형