GameObject와 무관하게 코드를 실행하는 법
유니티에서 코드를 실행하기 위해서는 항상 GameObject에 Script를 Component로 달아줘야 한다고 알고 있습니다. 하지만 RuntimeInitializeOnLoadMethod Attribute를 사용하면 GameObject에 안달아도 실행시킬 수 있습니다. (MonoBehavior를 상속 받지 않는 클래스여도 상관 없습니다.)
단순하게 Attribute만 달면 됩니다. 아래의 코드를 참고하세요.
using UnityEngine;
static class nonGameObjectScript
{
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
static void DebugOnStart1()
{
Debug.Log("게임 시작!! 1");
}
[RuntimeInitializeOnLoadMethod]
static void DebugOnStart2()
{
Debug.Log("게임 시작!! 2");
}
}
이렇게 호출되는 메서드들은 게임이 로딩된 후, 그리고 Awake
메서드가 호출된 후에 실행됩니다.
출처