RuntimeInitializeOnLoadMethod 어트리뷰트
- 게임이 시작될 때 메서드를 자동 호출해주는(최초 1회) 어트리뷰트이다.
RuntimeInitializeOnLoadMethod 특징
- static 메서드만 적용 가능하다.
- 파라미터로 RuntimeInitializeLoadType을 받으며 실행 순서를 정할 수 있다. (기본은 Awake 이후이다.)
- MonoBehaviour가 아닌 일반 메서드에서도 호출 가능하다.
- RuntimeInitializeOnLoadMethod 어트리뷰트를 사용한 메서드가 여러개일 때, 실행 순서는 보장되지 않는다.
실행순서는 파라미터를 사용하지 않았을 때 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 |