using AibisDream.Kit; using Yarn.Unity; namespace AibisDream { public class LifeCycleManager : Singleton { private ILifeCycle _lifeCycle; private void OnEnable() { SceneLoader.Instance.LoadSceneEvent += OnInit; SceneLoader.Instance.UnloadSceneEvent += OnSceneUnload; } private void OnDisable() { SceneLoader.Instance.LoadSceneEvent -= OnInit; SceneLoader.Instance.UnloadSceneEvent -= OnSceneUnload; } public void Register(ILifeCycle lifeCycle) { _lifeCycle = lifeCycle; } private void OnInit() { _lifeCycle?.OnInit(); } [YarnCommand("game_start")] public void OnGameStart() { _lifeCycle?.OnGameStart(); } [YarnCommand("game_end")] public void OnGameEnd() { _lifeCycle?.OnGameEnd(); } private void OnSceneUnload() { _lifeCycle.OnSceneUnload(); _lifeCycle = null; } } }