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