구동 시 편집기 스크립트 코드의 실행

때때로, Unity가 시작되자 마자 사용자의 작업이 필요 없이 일부 편집기 스크립트 코드를 실행할 수 있게 되면 매우 유용합니다. 이 작업은 _static constructor_을 가진 클래스에 InitializeOnLoad 속성을 적용하여 할 수 있습니다. static constructor는 클래스와 같은 이름을 가진 함수로, 반환 타입(return type)이나 매개변수(parameter) 없이 선언됩니다(더 자세한 정보를 보려면, here 참조):-

using UnityEngine;
using UnityEditor;
 
[InitializeOnLoad]
public class Startup {
    static Startup()
    {
        Debug.Log("Up and running");
    }
}

static constructor는 항상 어떤 static function이나 클래스의 인스턴스의 사용보다 먼저 호출됨을 보장하지만, InitializeOnLoad 속성은 그것이 편집기가 시작하면 호출되도록 하고 있습니다.

이 기술이 사용될 수 있는 예제로 편집기에서 주기적인 콜백(callback)을 설정할 때 입니다(말하자면, 그 "frame update"). EditorApplication 클래스는 update 라 불리는 대리인(delegate)을 가지고 있는데, 이는 편집기가 실행되는 동안 초당 여러 번 호출됩니다. 프로젝트가 시작될 때 이 대리인을 허용하려면, 다음과 같은 코드를 사용할 수 있을 것 입니다:-

using UnityEditor;
using UnityEngine;
 
[InitializeOnLoad]
class MyClass
{
    static MyClass ()
    {
        EditorApplication.update += Update;
    }
 
    static void Update ()
    {
        Debug.Log("Updating");
    }
}

역링크