第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在unity3d中運行時結(jié)束協(xié)程

在unity3d中運行時結(jié)束協(xié)程

C#
達(dá)令說 2021-05-17 17:18:28
我試圖用按鈕啟動和結(jié)束協(xié)程。我可以啟動協(xié)程,但無法停止,如果在第一次啟動協(xié)程后再次單擊該按鈕,它將再次重新啟動并且滑塊值會上升。這是我的代碼    public void LoopButton(){    if (lb == 1){        StopCoroutine (AutoLoop());        tb--;    } else {        StartCoroutine (AutoLoop ());        tb++;    }}IEnumerator AutoLoop(){    slider.value = slider.minValue;    while(slider.value < slider.maxValue){        slider.value++;        yield return new WaitForSeconds(0.5f);    }    StartCoroutine (AutoLoop());}
查看完整描述

3 回答

?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗 獲得超8個贊

您需要使用調(diào)用由所返回StopCoroutine的相同 引用來進(jìn)行調(diào)用,如下所示:CoroutineStartCoroutine


private Coroutine loopCoroutine;


public void LoopButton()

{

    if (lb == 1)

    {

        StopCoroutine(loopCoroutine);

        tb--;

    }

    else

    {

        loopCoroutine = StartCoroutine(AutoLoop());

        tb++;

    }

}

要使用此方法,請將您的AutoLoop方法更改為使用while循環(huán),而不是AutoLoop在方法結(jié)束時啟動另一個協(xié)程。否則,您將無法停止從末尾開始的新協(xié)程AutoLoop。


IEnumerator AutoLoop()

{

    while(true)

    {

        slider.value = slider.minValue;


        while (slider.value < slider.maxValue)

        {

            slider.value++;

            yield return new WaitForSeconds(0.5f);

        }

    }

}

對于另一個解決方案,正如另一個用戶所評論的那樣,也可以通過布爾標(biāo)志來停止協(xié)程:


private bool stopLoop;


public void LoopButton()

{

    if (lb == 1)

    {

        stopLoop = true;

        tb--;

    }

    else

    {

        stopLoop = false;

        StartCoroutine (AutoLoop ());

        tb++;

    }

}


IEnumerator AutoLoop()

{

    slider.value = slider.minValue;


    while (slider.value < slider.maxValue && !stopLoop)

    {

        slider.value++;

        yield return new WaitForSeconds(0.5f);

    }


    if (!stopLoop)

    {

        StartCoroutine(AutoLoop());

    }

}

但是,StopCoroutine為了提高可讀性和整潔度,使用Unity優(yōu)于使用布爾值標(biāo)志。


查看完整回答
反對 回復(fù) 2021-05-23
?
呼啦一陣風(fēng)

TA貢獻(xiàn)1802條經(jīng)驗 獲得超6個贊

使用字符串作為協(xié)程名稱。像這樣:


public void LoopButton(){


    if (lb == 1){

        StopCoroutine ("AutoLoop");

        tb--;

    } else {

        StartCoroutine ("AutoLoop");

        tb++;

    }

}


IEnumerator AutoLoop(){


    slider.value = slider.minValue;


    while(slider.value < slider.maxValue){

        slider.value++;

        yield return new WaitForSeconds(0.5f);

    }


    StartCoroutine ("AutoLoop");

}


查看完整回答
反對 回復(fù) 2021-05-23
?
www說

TA貢獻(xiàn)1775條經(jīng)驗 獲得超8個贊

您可以使用StopCoroutine。

此處的更多信息:https : //docs.unity3d.com/ScriptReference/MonoBehaviour.StopCoroutine.html


查看完整回答
反對 回復(fù) 2021-05-23
  • 3 回答
  • 0 關(guān)注
  • 527 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號