Unity中遊戲暫停和開始怎麼實現?

2021-08-02 12:34:52 字數 1308 閱讀 3507

(1

)time.timescale = 0

可以暫停遊戲,

time.timescale = 1

恢復正常,但這是作用於整個遊戲的設定,不單單是當前場景,記得在需要的時候重置回

time.timescale = 1

。當然也可以使用time.timescale

來做遊戲的1倍、

2倍整體加速。

(2

)timescale

影響的因素:

設定time.timescale = 0 

將會暫停所有和幀率無關的事情。這些主要是指所有的物理事件和依賴時間的函式、剛體力和速度等,而且

fixedupdate會受到影響,會被暫停(不是update

),即timescale =0 

時將不會呼叫fixedupdate函式了。

但是,update和lateupdate函式本身的執行是不會受

time.timescale

的影響的。

update

是依賴你的機器的,它的呼叫次數和你的機器渲染一樣快慢(一些特殊情況除外);效能高的機器,幀率高,

update

函式執行次數也就多。因此,當使用

time.timescale = 0

時,所有和時間有關的事情都被暫停了。因為time.timescale為0時,

time.deltatime將為0

。這意味著,如果你使用

time.deltatime

來控制旋轉和位移等,那麼

time.timescale = 0

也將使這些物體停止運動。所以遊戲看起來是被凍結了,但是,我們的遊戲仍在渲染,也就是說update

函式仍在執行。

所以update和lateupdate這兩個方法裡面需要自己用**控制,且可以設定某些地方不會暫停(比如ui

動畫),弊端是如果想暫停,所有動畫相關都要與time.deltatime

這個字段繫結。

影響的動畫或者粒子特效之類的,那麼我們就需要用到

time.realtimes******artup

去單獨恢復他們,還有聲音部分也需要單獨恢復

timescale

。(4)以前看到一種實現暫停的方法是放棄time.deltatime

,自己實現兩個函式:

onpausegame

和 onresumegame

。這種方法擴充套件性強,缺點是寫起來可能比較繁瑣。

補充有關於暫停的相關有個帖子還是不錯的 

Unity中遊戲暫停和開始怎麼實現?

1 time.timescale 0可以暫停遊戲,time.timescale 1恢復正常,但這是作用於整個遊戲的設定,不單單是當前場景,記得在需要的時候重置回time.timescale 1。當然也可以使用time.timescale來做遊戲的1倍 2倍整體加速。2 timescale影響的因素 ...

unity中遊戲暫停的問題

unity裡面可以用time.timescale 0暫停遊戲,但只會執行到 涉及到等待時間的地方會暫停,比如 invoke f 1f invokerepeating f 1f,1f yield new return waitforseconds 2f 可能還有其他情況。但是類似於invoke f 0...

unity 遊戲報錯時,讓遊戲自動暫停

為什麼要讓遊戲報錯時,遊戲自動暫停呢?這麼做的意義是什麼呢?事情是這樣的,今天,遊戲測試組報了乙個錯,說是遊戲存檔存不上,每次開啟,都是從頭開始。正常的思維,應該是推斷,就是存檔的問題,因為存檔存不上,不是存檔的問題,是什麼問題?難道還是某個 錯誤引起的?別說,我和老霍一點點的查問題出在 最後,還真...