【UNITY】計時器的四種寫法 with C# - abc810601的創作 - 巴哈姆特

創作內容

58 GP

【UNITY】計時器的四種寫法 with C#

作者:笑│2013-12-15 20:53:36│巴幣:1,144│人氣:98237

今天要講的是遊戲中基本上都會用到的值 - 「計時器」

而我最常用的為以下四種,四種看似大同小異,但也各有所長。

第一種:使用Time.deltaTime


定義:
The time in seconds it took to complete the last frame.

一秒內從第1個Frame到最後一個Frame所花的時間,
所以不管電腦是一秒跑60格或者一秒30格、24格,值都會趨近於一。

就結果而言,deltaTime是為了遊戲「公平性」而產生的東西,
因此最常用於位移(translate),但拿來計時也是勉強可以用。

第二種:Time.time

定義:
This is the time in seconds since the start of the game.
從遊戲開始到現在所使用的時間。

在官方的範例中,該用途為gun reload,防止無限的子彈發射。
只要宣告reload所需的時間,配合Time.time,記錄下一次可以發射的時間,就可以使用,

所以是相當好用的一個計時功能。

第三種:StartCoroutine


定義:
Starts a coroutine.
啟動一個「協程」。

協程簡言之就是執行一個可繼續、可中斷的函式,
所以我可以告訴程式我要隔幾秒在執行下一行陳述式,
因此可以拿來當做計時計。

而使用yield,宣告就必須為IEnumerator,不然程式會報錯,
至於為什麼...
我只能說這就像宣告int 回傳值要有整數、宣告bool要回傳true/false的感覺吧。

第四種:InvokeRepeating

定義:
Invokes the method methodName in time seconds.
調用一個方法/秒 。

InvokeRepeating接受三個參數,第一個是方法名,第二個是「第一次調用」要隔幾秒,第三個則是「每隔幾秒調用一次」,與StartCoroutine一樣,是可以中斷的,只要使用CancelInvoke()。

而我認為這最常使用在「生出怪物」,像是我可以設定第一波怪10秒後出現,每0.5秒召喚一隻怪物,當然用途也不只這些,也可以配合其他函式創造出不同的用法。


這些都是基礎的計時器,可以拿來讀取時間,
而各位programer配合要使用的值,
就可以拿來當做遊戲時間、Combo、倒數計時、冷卻...等等,用途相當的多。

以上。


更動紀錄:2014/01/04新增第四種
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=2275726
All rights reserved. 版權所有,保留一切權利

相關創作

同標籤作品搜尋:UNITY|程式語言|C#

留言共 4 篇留言

ays.
不好意思翻古文了~
想問一下一般程式語言中return不是像是一個function call的結束嗎?

這樣方法三下面的timer++ 還是會被執行嗎?

02-09 20:39


return 後面就不會執行了沒錯
但yield 的特性就是後面仍會執行
詳細可以去參考net 2.0的yield return [e12]02-10 00:00
阿辰
感謝分享!!
這篇很讚!!
受益良多:D

10-24 16:59


[e12]10-24 21:43
梁爽
很不錯的文章

話說有聽過很多遊戲在平台移植的時候,用Time.deltaTime 的方法似乎有一些弊病
不過不同平台出現BUG是天經地義就是了XD

02-16 03:39

炭烤魷魚
Time.time可以歸零嗎?

06-14 18:46

我要留言提醒:您尚未登入,請先登入再留言

58喜歡★abc810601 可決定是否刪除您的留言,請勿發表違反站規文字。

後一篇:【Call of Uni...

追蹤私訊切換新版閱覽

作品資料夾

robert286 ლ(´•д• ̀ლ
ლ(´•д• ̀ლ看更多我要大聲說4小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】