免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
關(guān)于Unity3D的協(xié)程(Coroutine)

http://blog.163.com/hj_0467/blog/static/74252563201011711845180/

http://wg2009perfect.blog.163.com/blog/static/127997663201211111222126/

 

我在這摘要下:

1.

coroutine,中文翻譯“協(xié)程”。這個(gè)概念可能有點(diǎn)冷門(mén),不過(guò)百度之,說(shuō)是一種很古老的編程模型了,以前的操作系統(tǒng)里進(jìn)程調(diào)度里用到過(guò),現(xiàn)在操作系統(tǒng)的進(jìn)程調(diào)度都是根據(jù)時(shí)間片和優(yōu)先級(jí)來(lái)進(jìn)行輪換,以前是要程序自己來(lái)釋放cpu的控制權(quán),一直不釋放一直也就占用著cpu,這種要求程序自己來(lái)進(jìn)行調(diào)度的編程模型應(yīng)該就叫“協(xié)程”了。

協(xié)程和線(xiàn)程差不多,線(xiàn)程的調(diào)度是由操作系統(tǒng)完成的,協(xié)程把這項(xiàng)任務(wù)交給了程序員自己實(shí)現(xiàn),當(dāng)然也就可以提高靈活性,另外協(xié)程的開(kāi)銷(xiāo)比線(xiàn)程要小,在程序里可以開(kāi)更多的協(xié)程。

一些語(yǔ)言里自帶了對(duì)coroutine的實(shí)現(xiàn),比如lua。c里面雖然沒(méi)有coroutine,不過(guò)windows下提供了一種叫fiber的機(jī)制,叫做“纖程”,算是一種輕量級(jí)線(xiàn)程。

 

2.

 

一。什么是協(xié)同程序

       協(xié)同程序,即在主程序運(yùn)行時(shí)同時(shí)開(kāi)啟另一段邏輯處理,來(lái)協(xié)同當(dāng)前程序的執(zhí)行。換句話(huà)說(shuō),開(kāi)啟協(xié)同程序就是開(kāi)啟一個(gè)線(xiàn)程。

 

二。協(xié)同程序的開(kāi)啟與終止

       在Unity3D中,使用MonoBehaviour.StartCoroutine方法即可開(kāi)啟一個(gè)協(xié)同程序,也就是說(shuō)該方法必須在MonoBehaviour或繼承于MonoBehaviour的類(lèi)中調(diào)用。

       在Unity3D中,使用StartCoroutine(string methodName)和StartCoroutine(IEnumerator routine)都可以開(kāi)啟一個(gè)線(xiàn)程。區(qū)別在于使用字符串作為參數(shù)可以開(kāi)啟線(xiàn)程并在線(xiàn)程結(jié)束前終止線(xiàn)程,相反使用IEnumerator 作為參數(shù)只能等待線(xiàn)程的結(jié)束而不能隨時(shí)終止(除非使用StopAllCoroutines()方法);另外使用字符串作為參數(shù)時(shí),開(kāi)啟線(xiàn)程時(shí)最多只能傳遞一個(gè)參數(shù),并且性能消耗會(huì)更大一點(diǎn),而使用IEnumerator 作為參數(shù)則沒(méi)有這個(gè)限制。

        在Unity3D中,使用StopCoroutine(string methodName)來(lái)終止一個(gè)協(xié)同程序,使用StopAllCoroutines()來(lái)終止所有可以終止的協(xié)同程序,但這兩個(gè)方法都只能終止該MonoBehaviour中的協(xié)同程序。

        還有一種方法可以終止協(xié)同程序,即將協(xié)同程序所在gameobject的active屬性設(shè)置為false,當(dāng)再次設(shè)置active為ture時(shí),協(xié)同程序并不會(huì)再開(kāi)啟;如是將協(xié)同程序所在腳本的enabled設(shè)置為false則不會(huì)生效。這是因?yàn)閰f(xié)同程序被開(kāi)啟后作為一個(gè)線(xiàn)程在運(yùn)行,而MonoBehaviour也是一個(gè)線(xiàn)程,他們成為互不干擾的模塊,除非代碼中用調(diào)用,他們共同作用于同一個(gè)對(duì)象,只有當(dāng)對(duì)象不可見(jiàn)才能同時(shí)終止這兩個(gè)線(xiàn)程。然而,為了管理我們額外開(kāi)啟的線(xiàn)程,Unity3D將協(xié)同程序的調(diào)用放在了MonoBehaviour中,這樣我們?cè)诰幊虝r(shí)就可以方便的調(diào)用指定腳本中的協(xié)同程序,而不是無(wú)法去管理,特別是對(duì)于只根據(jù)方法名來(lái)判斷線(xiàn)程的方式在多人開(kāi)發(fā)中很容易出錯(cuò),這樣的設(shè)計(jì)保證了對(duì)象、腳本的條理化管理,并防止了重名。

 

Unity3D之協(xié)程(Coroutines & Yield )

http://blog.csdn.net/jjiss318/article/details/7447421

 這有些個(gè)國(guó)外的人解釋的,算是比較清楚,只是還是沒(méi)有原理上的解釋?zhuān)?/h3>

http://www.blog.silentkraken.com/2010/01/23/coroutines-in-unity3d-c-version/

http://blog.equals-equals.com/2009/11/18/tutorial-coroutines-pt-1-waiting-for-input/

 

我的一些粗淺小結(jié):

1.Coroutines顧名思議是用來(lái)協(xié)助主要進(jìn)程的,在Unity中感覺(jué)就是一個(gè)可動(dòng)態(tài)添加和移除的Update()函數(shù)。它的調(diào)用在所有Update函數(shù)之后。

Unity原文:

  • If you start a coroutine in LateUpdate it will also be called after LateUpdate just before rendering.
  • Coroutines are executed after all Update functions.

2.yield就像是一個(gè)紅綠燈,在滿(mǎn)足緊跟在它后面的條件之前,這個(gè)協(xié)程會(huì)掛起,把執(zhí)行權(quán)交給調(diào)用它的父函數(shù),滿(mǎn)足條件時(shí)就可以執(zhí)行yield下面的代碼。

Unity原文:

Coroutine

Normal coroutine updates are run after the Update function returns. A coroutine is function that can suspend its execution (yield) until the given given YieldInstruction finishes. Different uses of Coroutines:

  • yield;The coroutine will continue after all Update functions have been called on the next frame.
  • yield WaitForSeconds(2);Continue after a specified time delay, after all Update functions have been called for the frame
  • yield WaitForFixedUpdate();Continue after all FixedUpdate has been called on all scripts
  • yield WWWContinue after a WWW download has completed.
  • yield StartCoroutine(MyFunc); Chains the coroutine, and will wait for the MyFunc coroutine to complete first.
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Unity3D中協(xié)程Coroutine&yield
MonoBehaviour類(lèi)Invoke, Coroutine
簡(jiǎn)要分析unity3d中剪不斷理還亂的yield
Unity協(xié)程(Coroutine)原理深入剖析
Unity3D協(xié)程介紹 以及使用(2)
Unity協(xié)程(Coroutine)管理類(lèi)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服