Unity C# | 協程(Coroutine)的概念、使用及應用

更新 發佈閱讀 5 分鐘

前言

  這篇文章將會講述 Unity 中協程(Coroutine)的基本介紹,分享一些關於協程的應用方向,最後並總結簡單撰寫協程的步驟。

1. 聽聞已久

  其實協程是我一直都通過的東西,因為它撰寫完的程式碼可以非常的龐大與複雜,所以我曾經以為這是一個非常複雜的官方函式,後來發現這似乎是跟 C# 有關,不過依然沒有去碰觸。

2. 時間相關

  Cotoutine 是一個跟時間有關的函式,後面會做更詳細的介紹,基本上就是更加簡單好用的計時器,我們可以自己撰寫一份倒數計時的工具,也能運用協程進行計時的方式去處理問題。

3. 實用函數

  在遊戲設計中,時間是一項非常重要的事情,隨之而來用時間安排程式步驟的協成就會成為相當實用的函數,我自己判斷協程的優點非常多,對於新手而言暫時還不用擔心濫用或浪費效能這件事情。

二、協程(Coroutine)的基本介紹

  介紹 Coroutine 的一些內容。

1. 用時間來進行程式的控管

  前面有提到,它是基於時間為主軸的函式,有開始協程 (StartCoroutine) 與中斷協程 (StopCoroutine) 的內容,並且有暫停 (yield return) 幾秒後執行下一段程式碼。

2. 把工作安排到未來的時間

  它的基本概念是把工作安排到未來進行處理,不需要每一幀都進行調用,直到需要的時候才會調用,並且能避免程式工作量太大後,會在不同幀執行的效能問題,會在精準的時刻同步工作。

3. IEnumerator (列舉器)

  其中最核心的就式叫做 IEnumerator 的列舉器,我當初也是看到這個就覺得這個函式及相關知識相當複雜,因為它的字數很多以外,還有 yield retrun 這種我看不懂的程式碼,其實就是帶有時間的程式碼容器。

三、協程(Coroutine)的應用方面

  那協程通常會用於遊戲中的那些部分呢?

1. 動畫控制

  如果設計師想要讓玩家在受到攻擊後,同步處理兩項程式,並且失去控制與獲得受傷的無敵幀,那就可以使用協程進行安排,程式設計師也能很好的安排無敵時間有幾秒,受傷特效什麼時候要播放。

2. 等待時間

 擁有等待時間的東西都很適合使用協程來進行安排,如果是固定時間可以使用調用(Invoke) 擷取延遲來讓敵人固定時間重生,如果是曲線或者不具備規律的生程時間,使用協程(Coroutine)是很適合的方式。

3. 流程控制

  如果在遊戲中會出現一系列相同流程的環節,使用協程(Coroutine)來進行遊戲設計是不錯的選擇,例如敵人 AI 的設計,就能使用協程控制巡邏,在發現敵人後中斷協程,改為追尋玩家等等。

四、簡單的程式碼步驟

  接下來簡單敘述程式碼的撰寫步驟,不涉及完整的程式碼。

1. 創建一個列舉器(IEnumerator)

  首先,我們創建一個新的私人函式,這個函式使用列舉器(IEnumerator)作為宣告,並命名為 waitToDoSomeThing (等待來做某些事情)。

2. 撰寫回傳值

  因為它是一個正常的函式,因此會需要回傳值,也就是協程一定要等待幾秒鐘以後進行下一步,不過這個等待可以是零秒,撰寫方式「yield return new」後面接想要的等待形式。

  常使用的函式是等待幾秒 (WaitForSecond)這個函式,也有其它的呼叫方式可以參考,不過詳細就要自己上網尋找了,可以使用的類似項目有非常多種。

3. 開始協程

  在想要開始協程的地方使用開始協程 (StartCoroutine)就可以啟動協程,協程執行完畢以後也不用主動輸入 StopCoroutine 來結束協程,它是自行穿插在每一幀的函式,並不是創建一個新的執行緒。

五、後記

  在學習 Coroutine 的時候,我原本以為我會需要查詢大量的資料,結果我跑去跟 GPT 對話,我很喜歡跟它問問題的感覺,有耐心又有風度,也不會怕回答類似的問題,並且能追根究柢去探尋 Coroutine 的知識。


留言
avatar-img
瓶裝雪的沙龍
117會員
247內容數
你好,我是瓶裝雪!我是一名遊戲設計師!
瓶裝雪的沙龍的其他內容
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
看更多
你可能也想看
Thumbnail
這篇文章將會講述這款遊戲的開發預計與遊戲內系統的清單粗估。
Thumbnail
這篇文章將會講述這款遊戲的開發預計與遊戲內系統的清單粗估。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這篇文章將會講述 Unity 中協程(Coroutine)的基本介紹,分享一些關於協程的應用方向,最後並總結簡單撰寫協程的步驟。
Thumbnail
這篇文章將會講述 Unity 中協程(Coroutine)的基本介紹,分享一些關於協程的應用方向,最後並總結簡單撰寫協程的步驟。
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
這篇文章將會講述時間系統,以及 time 和 deltaTime 兩個時間類型。
Thumbnail
這篇文章將會講述時間系統,以及 time 和 deltaTime 兩個時間類型。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
這篇文章我將會講述關於 Update 相關的函式,並介紹他們在遊戲設計中所代表的地位,當未來需要使用時可以回來參考這篇文章。
Thumbnail
這篇文章我將會講述關於 Update 相關的函式,並介紹他們在遊戲設計中所代表的地位,當未來需要使用時可以回來參考這篇文章。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這篇文章將會快速介紹非同步函式(Async / Await)的簡易使用方式。
Thumbnail
這篇文章將會快速介紹非同步函式(Async / Await)的簡易使用方式。
Thumbnail
這篇文章將會分析時間,從時間的觀點再到時間的意義,最後介紹時間的各種操控,分享在遊戲設計中對時間的操作。
Thumbnail
這篇文章將會分析時間,從時間的觀點再到時間的意義,最後介紹時間的各種操控,分享在遊戲設計中對時間的操作。
Thumbnail
  這篇文章將介紹public函式應用,回顧保護層級、無類型兩個核心重點,再介紹遊戲製作重點程式(Script),再到控制中心Script製作與方針。
Thumbnail
  這篇文章將介紹public函式應用,回顧保護層級、無類型兩個核心重點,再介紹遊戲製作重點程式(Script),再到控制中心Script製作與方針。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News