概要
var task = new SingleTask(); task.Add( onEnded => { Debug.Log( "1" ); onEnded(); } ); task.Add( onEnded => { Debug.Log( "2" ); onEnded(); } ); task.Add( onEnded => { Debug.Log( "3" ); onEnded(); } ); task.Play( () => { Debug.Log( "completed" ); } );
1 2 3 completed
以前関わっていたUnityプロジェクトで
先輩が作成してくださったタスク管理クラスです
このクラスを使用するとコールバック地獄から解放されます
// アセットバンドル読み込み AssetBundleManager.LoadAll( () => { // マスタ読み込み MasterManager.LoadAll( () => { // セーブデータ読み込み SaveDataManager.LoadAll( () => { // ログイン LoginManager.Login( () => { // メインメニューに遷移 SceneManager.LoadMainMenu( () => { Debug.Log( "完了" ); } ); } ); } ); } ); } );
例えばこのような処理を下記のように記述できるようになります
var task = new SingleTask(); task.Add( AssetBundleManager.LoadAll ); // アセットバンドル読み込み task.Add( MasterManager.LoadAll ); // マスタ読み込み task.Add( SaveDataManager.LoadAll ); // セーブデータ読み込み task.Add( LoginManager.Login ); // ログイン task.Add( SceneManager.LoadMainMenu ); // メインメニューに遷移 task.Play( () => Debug.Log( "完了" ) );