씬 전환 시 함수 호출 순서
Awake -> OnEnable -> sceneLoaded -> Start
순서에 맞춰서 초기화를 해줬다. Start 다음에 호출해야할 함수들은 코루틴으로 한 프레임 늦춰서 호출시켜줬다.
private void OnStageSceneLoaded(Scene scene, LoadSceneMode mode)
{
if (scene.name == "Stage_Scene")
{
TimelineManager.Instance.LoadBlocks(blockIds);
RhythmManager.Instance.OnStart?.Invoke();
StartCoroutine(DelayInit());
SceneManager.sceneLoaded -= OnStageSceneLoaded;
}
}
private IEnumerator DelayInit()
{
yield return null;
for (int i = 0; i < TimelineManager.Instance.PlacedBlocks.Count; i++)
{
RhythmManager.Instance.rhythmActions.Add(TimelineManager.Instance.PlacedBlocks[i].GetComponent<IRhythmActions>());
}
RhythmManager.Instance.StartMusic();
}