(まとめ)Unityのコルーチンの使い方

コルーチンの使い方1
using UnityEngine;
using System.Collections;
public class CoroutineTest : MonoBehaviour {
	// (7)
	private IEnumerator coroutine;
	void Start () {
		//(1)
		StartCoroutine("Sample");
		//(2)
		StartCoroutine("Sample1", 20);
		//(3)
		StartCoroutine(Sample2(7, 1.5f));
		//(4)
		StartCoroutine("Sample3");
		//(5)
		StartCoroutine("Sample5");
		//(6)
		StartCoroutine("Sample6");
		//(7)
		coroutine = Sample7(30, 1.0f);
		StartCoroutine(coroutine);
	
	}
	// (1)コルーチンの途中で終了
	private IEnumerator Sample(){
		for(int i = 0; i < 100; i++){
			print("i: " + i);
			yield return new WaitForSeconds(1.0f);
			// iが10になったらコルーチン終了
			if(i == 10){
				yield break;
			}
		}
	}
	// (2)引数のあるコルーチンの実行
	private IEnumerator Sample1(int num){
		for(int i = 0; i < num; i++){
			print("i: " + i);
			yield return new WaitForSeconds(1.5f);
		}
	}
	// (3)引数が2つ以上あるコルーチンの実行
	private IEnumerator Sample2(int num, float s){
		for(int i = 0; i < num; i++){
			print("i:" + i);
			yield return new WaitForSeconds(s);
		}
	}
	// (4)コルーチンの途中で別のコルーチンを実行
	private IEnumerator Sample3(){
		for(int i = 0; i < 10; i++){
			print("Sample3 i: " + i);
			// 別のコルーチンを実行して終了するまで待つ
			yield return StartCoroutine("Sample4");
		}
	}
	private IEnumerator Sample4(){
		for(int i = 0; i < 3; i++){
			print("Sample4 i: " + i);
			yield return new WaitForSeconds(1);
		}
	}
	// (5)コルーチン内で別クラスのコルーチンを実行する
	private IEnumerator Sample5(){
		// CoroutineTest2クラスのアタッチ=インスタンス化
		CoroutineTest2 test2 = gameObject.AddComponent<CoroutineTest2>();
		// CoroutineTest2クラスのSample()メソッドを実行して、それが終了するまで待つ。
		yield return StartCoroutine(test2.Sample());
		print("終了");
	}
	// (6)実行中のコルーチンを止める
	private IEnumerator Sample6(){
		for(int i = 0; i < 100; i++){
			print("Sample6 i: " + i);
			yield return new WaitForSeconds(1.0f);
		}
	}
	// (7)2つ以上の引数を持つコルーチンを途中で止める
	private IEnumerator Sample7(int num, float s){
		for(int i = 0; i < num; i++){
			print("Sample7 i: " + i);
			yield return new WaitForSeconds(s);
		}
	}
	void Update(){
		// (6)
		// sボタンを押すとSample6コルーチンがストップする。
		if(Input.GetKeyDown(KeyCode.S)){
			StopCoroutine("Sample6");
		}
		// (7)
		// 7ボタンを押すとSample7コルーチンがストップする。
		if(Input.GetKeyDown(KeyCode.Alpha7)){
			StopCoroutine(coroutine);
		}
	}
}
コルーチンの使い方2
using UnityEngine;
using System.Collections;
public class CoroutineTest2 : MonoBehaviour {
	public IEnumerator Sample(){
		for(int i = 0; i < 10; i++){
			print("test2 i: " + i);
			yield return new WaitForSeconds(1.0f);
		}
	}
}Unity Code Memo
他のコースを見る
コルーチンの使い方1
using UnityEngine;
using System.Collections;
public class CoroutineTest : MonoBehaviour {
	// (7)
	private IEnumerator coroutine;
	void Start () {
		//(1)
		StartCoroutine("Sample");
		//(2)
		StartCoroutine("Sample1", 20);
		//(3)
		StartCoroutine(Sample2(7, 1.5f));
		//(4)
		StartCoroutine("Sample3");
		//(5)
		StartCoroutine("Sample5");
		//(6)
		StartCoroutine("Sample6");
		//(7)
		coroutine = Sample7(30, 1.0f);
		StartCoroutine(coroutine);
	
	}
	// (1)コルーチンの途中で終了
	private IEnumerator Sample(){
		for(int i = 0; i < 100; i++){
			print("i: " + i);
			yield return new WaitForSeconds(1.0f);
			// iが10になったらコルーチン終了
			if(i == 10){
				yield break;
			}
		}
	}
	// (2)引数のあるコルーチンの実行
	private IEnumerator Sample1(int num){
		for(int i = 0; i < num; i++){
			print("i: " + i);
			yield return new WaitForSeconds(1.5f);
		}
	}
	// (3)引数が2つ以上あるコルーチンの実行
	private IEnumerator Sample2(int num, float s){
		for(int i = 0; i < num; i++){
			print("i:" + i);
			yield return new WaitForSeconds(s);
		}
	}
	// (4)コルーチンの途中で別のコルーチンを実行
	private IEnumerator Sample3(){
		for(int i = 0; i < 10; i++){
			print("Sample3 i: " + i);
			// 別のコルーチンを実行して終了するまで待つ
			yield return StartCoroutine("Sample4");
		}
	}
	private IEnumerator Sample4(){
		for(int i = 0; i < 3; i++){
			print("Sample4 i: " + i);
			yield return new WaitForSeconds(1);
		}
	}
	// (5)コルーチン内で別クラスのコルーチンを実行する
	private IEnumerator Sample5(){
		// CoroutineTest2クラスのアタッチ=インスタンス化
		CoroutineTest2 test2 = gameObject.AddComponent<CoroutineTest2>();
		// CoroutineTest2クラスのSample()メソッドを実行して、それが終了するまで待つ。
		yield return StartCoroutine(test2.Sample());
		print("終了");
	}
	// (6)実行中のコルーチンを止める
	private IEnumerator Sample6(){
		for(int i = 0; i < 100; i++){
			print("Sample6 i: " + i);
			yield return new WaitForSeconds(1.0f);
		}
	}
	// (7)2つ以上の引数を持つコルーチンを途中で止める
	private IEnumerator Sample7(int num, float s){
		for(int i = 0; i < num; i++){
			print("Sample7 i: " + i);
			yield return new WaitForSeconds(s);
		}
	}
	void Update(){
		// (6)
		// sボタンを押すとSample6コルーチンがストップする。
		if(Input.GetKeyDown(KeyCode.S)){
			StopCoroutine("Sample6");
		}
		// (7)
		// 7ボタンを押すとSample7コルーチンがストップする。
		if(Input.GetKeyDown(KeyCode.Alpha7)){
			StopCoroutine(coroutine);
		}
	}
}
コルーチンの使い方2
using UnityEngine;
using System.Collections;
public class CoroutineTest2 : MonoBehaviour {
	public IEnumerator Sample(){
		for(int i = 0; i < 10; i++){
			print("test2 i: " + i);
			yield return new WaitForSeconds(1.0f);
		}
	}
}(まとめ)Unityのコルーチンの使い方