공통 특징
-
클래스 또는 메소드 상단에 애트리뷰트를 명시한다.
-
컴포넌트로 넣지 않고, 스크립트로만 존재해도 실행된다.
-
정적 클래스나 상속에 관계 없이 동작한다.
-
메소드 애트리뷰트는 정적 메소드에만 동작한다.
컴파일, 플레이모드 진입 시 실행
Note
EditorApplication.isPlaying
으로 현재 에디터 모드를 구분하여 활용할 수 있다.
[InitializeOnLoad]
-
using UnityEditor;
-
클래스 애트리뷰트
-
정적 생성자가 호출되므로, 정적 생성자에 원하는 코드를 작성한다.
-
실행 타이밍 : 컴파일, 플레이모드 진입(Awake() 호출 이전)
-
활용 :
EditorApplication.update
에 이벤트 핸들러를 추가하고 싶을 때
[InitializeOnLoadMethod]
-
using UnityEditor;
-
메소드 애트리뷰트
-
실행 타이밍 : 컴파일, 플레이모드 진입(Awake() 호출 이전)
플레이 모드 진입 시 실행
[InitializeOnEnterPlayMode]
-
using UnityEditor;
-
메소드 애트리뷰트
-
실행 타이밍 : 플레이 모드 진입(Awake() 호출 이전)
[RuntimeInitializeOnLoadMethod]
-
using UnityEngine
-
메소드 애트리뷰트
-
실행 타이밍 : 플레이 모드 진입(Awake(), OnEnable() 호출 이후)
실행 순서(플레이 모드 기준)
-
[InitializeOnLoad]
: 정적 생성자 -
[InitializeOnEnterPlayMode]
: 정적 메소드 -
[InitializeOnLoadMethod]
: 정적 메소드 -
Awake()
,OnEnable()
: 동일 클래스 내에서는Awake()
우선 -
[RuntimeInitializeOnLoadMethod]
: 정적 메소드 -
Start()