検証環境
- Unity 2020.1.6f1
- Android 8.0.0
概要
using UnityEngine; public class Example : MonoBehaviour { [RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.AfterSceneLoad )] private static void InitializeAfterSceneLoad() { new GameObject( nameof( RuntimeInitializeLoadType.AfterSceneLoad ) ); } [RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.BeforeSceneLoad )] private static void InitializeBeforeSceneLoad() { new GameObject( nameof( RuntimeInitializeLoadType.BeforeSceneLoad ) ); } [RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.AfterAssembliesLoaded )] private static void InitializeAfterAssembliesLoaded() { new GameObject( nameof( RuntimeInitializeLoadType.AfterAssembliesLoaded ) ); } [RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.BeforeSplashScreen )] private static void InitializeBeforeSplashScreen() { new GameObject( nameof( RuntimeInitializeLoadType.BeforeSplashScreen ) ); } [RuntimeInitializeOnLoadMethod( RuntimeInitializeLoadType.SubsystemRegistration )] private static void InitializeSubsystemRegistration() { new GameObject( nameof( RuntimeInitializeLoadType.SubsystemRegistration ) ); } private void OnGUI() { GUI.color = Color.white; foreach ( var x in FindObjectsOfType<Transform>() ) { GUILayout.Label( x.name ); } } }
上記のように RuntimeInitializeOnLoadMethod のタイミングで new GameObject する場合、
Unity エディタ上ではどのタイミングでもゲームオブジェクトが生成されるが
例えば Android の Mono2x ビルドや IL2CPP ビルドで作成したアプリでは
- AfterSceneLoad
- BeforeSceneLoad
のタイミングならゲームオブジェクトは生成され、
- AfterAssembliesLoaded
- BeforeSplashScreen
- SubsystemRegistration
のタイミングだとゲームオブジェクトは生成されない