(まとめ)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のコルーチンの使い方