【一】初識協程 "Unity 3d"

來源:互聯網
上載者:User

Hey,U3D協程

在進行遊戲開發時,我們常常遇到這種情況,在特定的條件滿足時,觸發某些行為,執行一系列代碼。當遇到此類需喚醒操作的問題時,就可以使用協程。

特徵:

有條件的回調代碼。

舉例:

 private void BeginCoroutine()
    {
        Debug.Log("coroutine before");
        StartCoroutine(DoSomethings());
        Debug.Log("coroutine after");
    }


    private IEnumerator DoSomethings()
    {
        Debug.Log("doing");
        yield return 0;
        Debug.Log("done");
    }

運行結果:

coroutine before

doing

coroutine after

done

樣本很簡單,從運行結果可以看出,DoSomethings函數在執行完doing後,立即去執行了coroutine after程式碼片段。

簡析實現流程

1. 通過StartCoroutine 執行函數 開始協程

2. 在函數中嵌入yield塊,該塊必須是IEnumerator 迭代器傳回型別

下面說下,常出現混淆幾點:

1. 協程是在主線程上執行的,並且沒有阻塞。

2. 再次yield 只能出現在iterator塊中


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.