五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Unity-協(xié)程

2021-01-07 09:22 作者:unity_某某師_高錦錦  | 我要投稿

調(diào)用函數(shù)時,函數(shù)將運行到完成狀態(tài),然后返回。這實際上意味著在函數(shù)中發(fā)生的任何動作都必須在單幀更新內(nèi)發(fā)生;函數(shù)調(diào)用不能用于包含程序性動畫或隨時間推移的一系列事件。例如,假設(shè)需要逐漸減少對象的 Alpha(不透明度)值,直至對象變得完全不可見。

就目前而言,F(xiàn)ade 函數(shù)不會產(chǎn)生期望的效果。為了使淡入淡出過程可見,必須通過一系列幀降低 Alpha 以顯示正在渲染的中間值。但是,該函數(shù)將完全在單個幀更新中執(zhí)行。這種情況下,永遠不會看到中間值,對象會立即消失。

可以通過向 Update 函數(shù)添加代碼(此代碼逐幀執(zhí)行淡入淡出)來處理此類情況。但是,使用協(xié)程來執(zhí)行此類任務(wù)通常會更方便。

協(xié)程就像一個函數(shù),能夠暫停執(zhí)行并將控制權(quán)返還給 Unity,然后在下一幀繼續(xù)執(zhí)行。在 C# 中,聲明協(xié)程的方式如下:

此協(xié)程本質(zhì)上是一個用返回類型 IEnumerator 聲明的函數(shù),并在主體中的某個位置包含 yield return 語句。yield return 行是暫停執(zhí)行并隨后在下一幀恢復(fù)的點。要將協(xié)程設(shè)置為運行狀態(tài),必須使用?StartCoroutine?函數(shù):

您會注意到 Fade 函數(shù)中的循環(huán)計數(shù)器能夠在協(xié)程的生命周期內(nèi)保持正確值。實際上,在 yield 語句之間可以正確保留任何變量或參數(shù)。

默認情況下,協(xié)程將在執(zhí)行 yield 后的幀上恢復(fù),但也可以使用?WaitForSeconds?來引入時間延遲:

可通過這樣的協(xié)程在一段時間內(nèi)傳播效果,但也可將其作為一種有用的優(yōu)化。游戲中的許多任務(wù)需要定期執(zhí)行,最容易想到的方法是將任務(wù)包含在 Update 函數(shù)中。但是,通常情況下,每秒將多次調(diào)用該函數(shù)。不需要以這樣的頻繁程度重復(fù)任務(wù)時,可以將其放在協(xié)程中來進行定期更新,而不是每一幀都更新。這方面的一個示例可能是在附近有敵人時向玩家發(fā)出的警報。此代碼可能如下所示:

如果有很多敵人,那么每幀都調(diào)用此函數(shù)可能會帶來很大開銷。但是,可以使用協(xié)程,每十分之一秒調(diào)用一次:

這將大大減少所進行的檢查次數(shù),而不會對游戲運行過程產(chǎn)生任何明顯影響。

注意:禁用 MonoBehaviour 時,不會停止協(xié)程,僅在明確銷毀 MonoBehaviour 時才會停止協(xié)程??梢允褂?MonoBehaviour.StopCoroutine 和 MonoBehaviour.StopAllCoroutines 來停止協(xié)程。銷毀 MonoBehaviour 時,也會停止協(xié)程。


Unity-協(xié)程的評論 (共 條)

分享到微博請遵守國家法律
大足县| 霞浦县| 永安市| 蚌埠市| 济南市| 灵璧县| 邮箱| 论坛| 平远县| 周宁县| 松阳县| 鄂托克前旗| 太仓市| SHOW| 城口县| 通河县| 夏津县| 汕头市| 泉州市| 巨野县| 通州市| 甘泉县| 灯塔市| 信丰县| 定安县| 荆门市| 潜山县| 宁陵县| 滦平县| 无极县| 安塞县| 开封县| 扶余县| 锦州市| 封丘县| 荆州市| 石阡县| 玛沁县| 农安县| 健康| 北安市|