プログラミング

Unityのコルーチンについて徹底解説!

コルーチンって何?

Unityでゲームを作っていると、一定時間待ったり、特定の条件が満たされるまで待つといった処理を実現したくなることがあると思います。
そういったときに使うのがコルーチンです。コルーチンは、Unityで非同期処理を行うための便利な仕組みです。

コルーチンの基本的な使い方

まずは基本的な使い方を見てみましょう!

using System.Collections;
using UnityEngine;

public class Example : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(MyCoroutine());
    }

    IEnumerator MyCoroutine()
    {
        yield return new WaitForSeconds(2);
        Debug.Log("2秒経ちました!");
    }
}

この例では、Startメソッドでコルーチンを開始し、2秒待ってからメッセージを表示しています。

コルーチンの応用

コルーチンは他にも色々な場面で使えます!
例えば、シーンのロードやフェードイン・フェードアウトの効果を簡単に実装できます。

IEnumerator LoadSceneCoroutine(string sceneName)
{
    yield return new WaitForSeconds(1); // 1秒待つ
    SceneManager.LoadScene(sceneName);
}

コルーチンの注意点

「コルーチンって便利だけど、何に気をつければいいの?」という疑問も出てくると思います!
コルーチンはスクリプトが無効化されると自動的に停止します。
そのため、途中でオブジェクトが破棄されたり、スクリプトが無効化されたりすると、予期せぬ動作になる可能性があります。

コルーチンの終了方法

コルーチンを途中で終了させたいときはどうするの?そんなときはStopCoroutineを使います!

private Coroutine myCoroutine;

void Start()
{
    myCoroutine = StartCoroutine(MyCoroutine());
}

void StopMyCoroutine()
{
    if (myCoroutine != null)
    {
        StopCoroutine(myCoroutine);
    }
}

まとめ

Unityのコルーチンは非同期処理を簡単に実現できる強力なツールです!
基本的な使い方から応用まで、さまざまな場面で活用できます。ただし、スクリプトの有効・無効状態には注意が必要です。

さらに非同期処理をもっと便利に使いたい方はUniRxやUniTaskを活用することも検討してみてもいいかもしれません。リアクティブプログラミングやasync/awaitパターンを使った非同期処理も可能になります。こちらに関しては以下で別途記事にしてるので参考にしてみてください!

Unity開発を効率化!UniRxとUniTaskを使いこなそう!

  • この記事を書いた人

あるせ

上場ゲーム会社の現役プログラマーで1児の父です。 プログラミングを始めたい方向けのライトな記事からゲーム開発の現場で得た知見まで幅広く発信します!

PickUp

1

bool変数の命名の重要性 プログラムを書くとき、bool型の変数名の付け方はとても重要です!なぜなら、コードを読む人にとって、変数名からその役割が直感的に分かることが求められるからです。bool値は ...

2

記事文章 はじめに WordPressを使ってブログを運営していると、毎回アイキャッチ画像を設定するのが手間ですよね!今回は、アイキャッチ画像を自動で生成するプラグインの作り方をご紹介します。これで作 ...

3

はじめに インターネットの回線速度が気になることってありますよね!今回は、5分ごとに回線速度を計測し、そのデータをグラフにする方法を紹介します。PythonとSpeedtest CLIを使えば、比較的 ...

-プログラミング
-, ,