Edited at

[Unity]Coroutineでカウントダウンを作ってみた


はじめに

Unityの基本的な文法を学んで、それを使ったサンプルを作っています。

Unity公式チュートリアルのScriptingのIntermediate Gameplay Scripting(https://unity3d.com/jp/learn/tutorials/s/scripting)

から選んで学んでいます。今回は14のコルーチンを選びました。


開発環境

Unity2018.3


コールチンとは

処理を一旦中断した後、同じところから再開して出来る処理


基本的な文法

yield~ で一旦中断する。


Test

public class Test : MonoBehaviour {  

void Start () {
StartCoroutine ("Sample");// コルーチンを実行
}

// コルーチン
private IEnumerator Sample() {
yield return new WaitForSeconds (?f);//?秒待つ
yield return null;//1フレーム待つ
yield break;//コールチンの途中でも強制終了
}

}



コルーチン をつかってサンプル作成した


作ったもの

カウントダウンマシン

- スタートボタンを押したら5秒からカウントダウンスタート

- ストップボタンを押したらカウントダウンが一時停止

- startボタンは一度押したらカウントダウン終了まで押せない


コード

using System.Collections;

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class CountDownScript : MonoBehaviour
{
public Text countDownText;
public Button startButton;

public void StartButton()
{
StartCoroutine("CountDown");
startButton.enabled = false;
}

public void StopButton()
{
StopCoroutine("CountDown");

}

IEnumerator CountDown()
{
for (int i = 5; i > -1; i--)
{
yield return new WaitForSeconds(1);//1秒待つ
countDownText.text = i.ToString();

}
startButton.enabled = true;
yield break;

}

}