【Unity】時間を指定して、その後関数を呼び出す

  • |
【Unity】時間を指定して、その後関数を呼び出す
   

第9回目は、時間を指定して設定されたメソッドを呼び出す方法です。
cocos2dxを利用している場合はDelayTimeクラスやCallFuncクラスを使って実装していましたが、Unityではどのようにしたらいいのかを調べました。

前回:【Unity 2D】衝突判定について | albatrus.com

コルーチン

Unityだけではないのですが、「コルーチン」という仕組みがあります。

    void Start () {
	
     指定された「コルーチン」を呼び出す
		StartCoroutine("hogehoge");

	}

    //「コルーチン」で呼び出すメソッド
    IEnumerator hogehoge(){

		Debug.Log("start");
		yield return new WaitForSeconds(5);
		Debug.Log("5秒経ちました");

	}



StartCoroutine

まずは、「コルーチン」で設定された関数(メソッド)を呼び出す時には[StartCoroutine]を利用します。

StartCoroutine("hogehoge");


IEnumerator ※※※()

「コルーチン」に指定する関数には[IEnumerator]を頭に付けます。
    IEnumerator hogehoge(){

	

	}

yield return new WaitForSeconds()

時間を指定する場合には[WaitForSeconds]を利用します。
指定された秒数後に、[WaitForSeconds]の下に書いたコードが呼び出されます。

    IEnumerator hogehoge(){

		Debug.Log("start");
		yield return new WaitForSeconds(5);
		Debug.Log("5秒経ちました");

	}

コルーチンを途中で止める場合

コルーチン内で条件式などを使って、途中で中断する場合は[StopCorutine]を利用します。
また、全てのコルーチンを止める場合は[StopAllCorutine]を使います。

Invoke

「コルーチン」だけではなく、Invoke()を利用すれば同じように時間が指定できます。
    void Start () {
	
		Debug.Log("start");
        //(メソッド,秒数)を指定
		Invoke("hogehoge",5);

	}
    //「Invoke」で呼び出すメソッド
    void hogehoge(){

        Debug.Log("5秒後");

	}


Updateを利用する

cocos2dxでもよく利用しているのですが、Updateを使ってある時間ごとにメソッドを呼び出す方法もあります。

    float time = 0.0f;
	void Update () {
	
		time = time + Time.deltaTime;
		if(time >= 5.0f){
			
			time = 0;
			Debug.Log("5秒後");

		}


	}


最後に

初め「コルーチン」についてよくわかっていなかったのですが、いろいろ試してどんなものなのか体感出来ました。
これは非常に便利な関数なので忘れずに利用をしていきたいです。


Related Posts Plugin for WordPress, Blogger...