private void Awake() { if (instance == null) { instance = this; } else { throw new Exception("There must only one service at a time"); } SceneManager.sceneLoaded += HandleSceneLoaded; }
private MonoBehaviourService() { var gameObject = new GameObject { hideFlags = HideFlags.HideInHierarchy }; //NOTE When running tests you cannot use DontDestroyOnLoad in editor mode if (Application.isPlaying) { Object.DontDestroyOnLoad(gameObject); } serviceInstance = gameObject.AddComponent <MonoBehaviourServiceBehaviour>(); serviceInstance.OnLevelLoaded = () => { if (OnLevelLoaded != null) { OnLevelLoaded(); } }; serviceInstance.OnLateUpdate = () => { if (OnLateUpdate != null) { OnLateUpdate(); } }; serviceInstance.OnUpdate = () => { if (OnUpdate != null) { OnUpdate(); } }; serviceInstance.OnFixedUpdate = () => { if (OnFixedUpdate != null) { OnFixedUpdate(); } }; serviceInstance.ApplicationPause = paused => { if (ApplicationPause != null) { ApplicationPause(paused); } }; serviceInstance.ApplicationFocus = focused => { if (ApplicationFocus != null) { ApplicationFocus(focused); } }; serviceInstance.ApplicationQuit = () => { if (ApplicationQuit != null) { ApplicationQuit(); } }; }