概要
var task = new MultiTask(); 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プロジェクトで
先輩が作成してくださったタスク管理クラスです
このクラスを使用するとコールバック地獄から解放されます
前回紹介したSingleTaskとの違いに関してですが
MultiTaskはAdd関数で追加されたタスクが同時に実行されます
そのため、下記のように非同期で複数のリソースの読み込みを開始して
すべての読み込みが完了したら次の処理に進むといったことが実現できます
var task = new MultiTask(); task.Add( onEnded => ResourceManager.Load( "1.txt", onEnded ) ); task.Add( onEnded => ResourceManager.Load( "2.txt", onEnded ) ); task.Add( onEnded => ResourceManager.Load( "3.txt", onEnded ) ); task.Add( onEnded => ResourceManager.Load( "4.txt", onEnded ) ); task.Add( onEnded => ResourceManager.Load( "5.txt", onEnded ) ); task.Play( () => Debug.Log( "完了" ) );