コルーチンって何?
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パターンを使った非同期処理も可能になります。こちらに関しては以下で別途記事にしてるので参考にしてみてください!