アクアリウムの書庫

特にあれこれするわけでもなく、ただ書いてみることにしてみる。

「Unity」コルーチンをある程度同時に実行しつつ、全部完了するまで待っててほしい

素材のロードとかでコルーチンを使うときに、

流石に一個一個待機してるのは、ちょっと遅すぎるし

かといって大量の素材を読み込むときにそのすべてを同時に実行したら

パンクしそうだなって思ったので、できそうな範囲内で作ってみた。

 

 

IEnumratorをある程度同時実行しつつ、全部完了するまで待機してくれる感じの奴

 

ホントはパスワードが完全にユニークになってることを検証する必要があるし、

実際に使ってみたら絶対に妙な動きになってる気がしなくもないんだけども……

全てはCoroutine自身が「自分は実行中である」という事を教えてくれないからこうなった。ワタシワルクナイ

 

・以下テストコード

>|C#|

    IEnumerator Start()
    {
        ParallelCoroutineQueue list = new ParallelCoroutineQueue();

        for(int i = 0; i < 30; ++i)
        {
            list.Add(Test(i));
        }

        yield return list.WaitForCoroutine(this);

        Debug.Log("End");
    }

    IEnumerator Test(int i)
    {
        Debug.Log($"Start : {i}");
        yield return new WaitForSeconds(Mathf.Min(5, i));
        Debug.Log($"End : {i}");
    }

||<