평소 유니티를 사용할 때 특정 시점에 코드를 실행시키는 건 큰 문제가 없습니다. 예를 들면 게임이 시작됐을 때 Awake, Start, OnEnable 같은 이벤트 함수를 상황에 맞게 골라 쓰면 됩니다.
하지만 이는 게임 플레이 시점 이벤트 함수입니다. 에디터 시점 이벤트는 따로 존재합니다.
InitializeOnLoad는 간단히 말하자면 유니티 시작 시 실행되는 이벤트 함수입니다.
출처 : https://docs.unity3d.com/ScriptReference/InitializeOnLoadAttribute.html
유니티를 로드할 때와 재컴파일을 할 때 실행됩니다.
출처 : https://docs.unity3d.com/ScriptReference/InitializeOnLoadAttribute.html
해당 시점에서 에셋 작업은 피해야 합니다.
사용법은 간단합니다. [InitializeOnLoad]를 클래스에 붙이고 static 생성자를 만들면 됩니다.
코드를 저장하고 재컴파일이 이루어지면 작동하는 것을 확인할 수 있을 것입니다. 또한 유니티를 키는 순간에도 확인할 수 있습니다.
출처 : https://docs.unity3d.com/kr/current/Manual/RunningEditorCodeOnLaunch.html'
특정 이벤트를 구독시킬 때 유용합니다.
출처 : https://docs.unity3d.com/ScriptReference/InitializeOnLoadMethodAttribute.html
클래스가 아닌 static 함수에다 붙이는 방식으로도 가능합니다.