FC2ブログ
    02 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 04

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】 yield return StartCoroutine を StopCorutine するとき 

    こんにちは。
    大坂です。

    今日も宣伝から!
    URL(Android):https://play.google.com/store/apps/details?id=com.halcyon.pocketgirl3
    URL(iOS):https://itunes.apple.com/jp/app/id1539553611

    PV:


    さて、yield return StartCoroutine を StopCorutine したい時ってありますよね。
    前から使ってたような気がしますが、なんかパッとやり方を思い出せなかったので…。

    ①Coroutine を使用する方法

    bool isLoop;
    Coroutine testCoroutine;

    IEnumerator Start() {
    btnTest.onClick.AddListener(OnClickStop);
    // Coroutine 変数に StartCoroutine を設定
    testCoroutine = StartCoroutine(TestCorutine());
    // フラグが false になるまで待つ
    yield return new WaitWhile(() => isLoop);
    Debug.Log("Stopしたよ");
    }

    public IEnumerator TestCorutine() {
    isLoop = true;
    while(isLoop) {
    yield return null;
    }
    }

    public void OnClickStop() {
    isLoop = false;
    }


    ②IEnumerator を使用する方法

    bool isLoop;
    IEnumerator testIEnumerator;

    IEnumerator Start() {
    btnTest.onClick.AddListener(OnClickStop);
    testIEnumerator = TestCorutine();
    yield return StartCoroutine(testIEnumerator);
    Debug.Log("Stopしたよ");
    }

    public IEnumerator TestCorutine() {
    isLoop = true;
    while(isLoop) {
    yield return null;
    }
    }

    public void OnClickStop() {
    isLoop = false;
    }


    最近直したときはCoroutineを使用する方法でやりましたが、
    IEnumerator を使用する方が修正少なかったなぁと思い、忘れないようにメモです。

    ではまたノシ

    Category: Androidアプリ紹介

    tb 0 : cm 0