0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【unity】非同期処理について

Posted at

はじめに

unityにて、非同期処理を行いたく調査をして実装したので、メモ。
(ちなみに非同期処理というのは、かなり簡潔に言うと自分以外の誰かに処理を任せるようなことを言う。)

内容

unityでは「コルーチン」という便利な仕組みがあり、非同期処理を簡単に実装できる。

非同期処理
    IEnumerator Example()
    {
        // フラグを設定する
        exFlg = true;

        // 指定の秒数、処理を停止する
        yield return new WaitForSeconds(waitSecond);

        // フラグを解除する
        exFlg = false;
    }

上記のように、IEnumeratorというキーワードを用いて実装したい非同期処理を実装する。今回は、一定時間の間、フラグを設定する処理を実装してみた。
肝になるのはyieldというワードで、ここで指定した時間だけ処理が止まる。と言っても、この処理の内部で止まるだけで、ゲーム自体が止まるわけではないので、ご安心を。

非同期処理(呼び出し側)
    public void waitExample(){
    
        // 非同期処理の呼び出し
        StartCoroutine("Example");

        // ここは非同期処理を呼び出してすぐに実行される。
        Debug.Log("test");
    }

先ほど定義した非同期処理(コルーチン)を呼び出してみる。
呼び出すには、StartCoroutine("コルーチン名")にて呼び出すことができる。

コルーチンを呼び出した後は、すぐにそのあとの行(Debug.Logの部分)が呼び出される。まさに、処理を誰かに依頼しているイメージでいるとわかりやすい。

まとめ

  • IEnumerateで実装したいコルーチンを定義。
  • 定義する際はyieldにて停止時間を定義する。
  • StartCoroutineにてコルーチンを呼び出す。

これらを覚えておけば、おそらく簡単なゲームを作るのには困らないだろう。
ちなみに、誰かに処理を任せるようなイメージでいるとよい、ということは何度でも言っていく。

参考文献

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?