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

2021-10-08 23:10:12 字數 800 閱讀 8132

(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這個字段繫結。

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

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 遊戲報錯時,讓遊戲自動暫停

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