トーフメモ

主にゲーム制作

3秒でわかる!「カスタムコルーチン」【Unity】

f:id:tofgame:20190428235503j:plain

カスタムコルーチンとは

自分で実装するコルーチンです!

作り方

分指定で待ってくれるコルーチンを作ります。

(1)クラスを定義

public class WaitForMinutes{
}

(2)CustomYieldInstructionを継承

using UnityEngine;
public class WaitForMinutes : CustomYieldInstruction {
}

(3)keepWaitingをオーバーライド

抽象メソッドを実装しよう。

public class WaitForMinutes : CustomYieldInstruction {
    public override bool keepWaiting {
        get { return true; }
    }
}

(4)機能を作る

コンストラクタを定義しよう。

using UnityEngine;
public class WaitForMinutes : CustomYieldInstruction {
    private float waitTime; //実際の待ち時間

    public WaitForMinutes (float time) {
        waitTime = Time.realtimeSinceStartup + time * 60;
    }

    public override bool keepWaiting {
        get { return (Time.realtimeSinceStartup < waitTime); }
    }
}

(5)あとは使うだけ!

using System.Collections;
using UnityEngine;

public class Test : MonoBehaviour {
	private void Start () {
        StartCoroutine(TestCorountine());
	}

    private IEnumerator TestCorountine () {
        yield return new WaitForMinutes(5);
        Debug.Log("Waited 5 minutes.");
    }
}