유니티 [ExecuteInEditMode]와 [ExecuteAlways] 차이점

 

한 줄 요약

ExecuteInEditMode는 에디터 모드에서만 실행되므로 편집 중 객체의 변화를 즉시 반영하고 싶을 때 사용합니다.

ExecuteAlways는 에디터 모드와 플레이 모드 모두에서 스크립트가 실행되어야 할 때 사용합니다.

 


ExecuteInEditMode

using UnityEngine;

[ExecuteInEditMode]
public class ExampleInEditMode : MonoBehaviour
{
    private void Update()
    {
        Debug.Log("Update called in Edit Mode");
    }
}

 

 

ExecuteInEditMode는 스크립트가 에디터 모드에서도 실행되도록 합니다. 즉, 게임을 실행시키지 않더라도 에디터 모드에서 스크립트의 Update와 OnEnable 같은 MonoBehaviour 메서드가 호출됩니다.

 

그러나 이 특성은 플레이 모드와는 달리 에디터 모드에서만 실행됩니다.

 


ExecuteAlways

using UnityEngine;

[ExecuteAlways]
public class ExampleAlways : MonoBehaviour
{
    private void Update()
    {
        Debug.Log("Update called Always");
    }
}

 

ExecuteAlways는 스크립트가 에디터 모드뿐만 아니라 플레이 모드에서도 Update와 OnEnable 같은 MonoBehaviour 메서드가 호출되도록 해줍니다.

 

[ExecuteInEditMode]의 기능을 포함하면서도 플레이 모드에서도 계속 실행됩니다.