본문 바로가기
Unity

[RuntimeInitializeOnLoadMethod]

by LemongO 2024. 6. 5.
RuntimeInitializeOnLoadMethod 어트리뷰트
  • 게임이 시작될 때 메서드를 자동 호출해주는(최초 1회) 어트리뷰트이다.

 

RuntimeInitializeOnLoadMethod 특징
  • static 메서드만 적용 가능하다.
  • 파라미터로 RuntimeInitializeLoadType을 받으며 실행 순서를 정할 수 있다. (기본은 Awake 이후이다.)
  • MonoBehaviour가 아닌 일반 메서드에서도 호출 가능하다.
  • RuntimeInitializeOnLoadMethod 어트리뷰트를 사용한 메서드가 여러개일 때, 실행 순서는 보장되지 않는다.

static 메서드만 적용 가능
파라미터로 RuntimeInitializeLoadType 을 받는다.
유니티 문서 번역

 

 

실행순서는 파라미터를 사용하지 않았을 때 Awake가 먼저 실행된다.

실행순서가 RuntimeInitialize 메서드가 먼저라면 파라미터를 사용하도록 하자.

 

 

using System.Collections;
using UnityEngine;

public class CoroutineManager : MonoBehaviour
{
    private static CoroutineManager monoInstance;

    [RuntimeInitializeOnLoadMethod]
    private static void Initialize()
    {
        monoInstance = new GameObject("[CoroutineManager]").AddComponent<CoroutineManager>();
        DontDestroyOnLoad(monoInstance.gameObject);        
    }

    public static Coroutine StartCoroutineEx(IEnumerator coroutine)
    {
        return monoInstance.StartCoroutine(coroutine);
    }

    public static void StopCoroutineEx(Coroutine coroutine)
    {
        monoInstance.StopCoroutine(coroutine);
    }
}

현재 진행중인 프로젝트 설계에서 매니저를 일반 클래스로 만들었기 때문에

코루틴을 대신 실행해줄 CoroutineManager를 해당 어트리뷰트를 사용해 만들었다.

'Unity' 카테고리의 다른 글

[RequireComponent]  (0) 2024.06.06
Addressable (로컬)  (0) 2024.05.31
Culling (최적화)  (0) 2024.05.09