我的項目是爲Android。我需要在渲染幀後運行代碼。這是因爲對於不同的幀,渲染時間可能會有些不同。我有一些耗時的網格和對撞機創建例程(因此基本上沒有多線程的空間,因爲它與Unity的API直接交互)。比方說,探查顯示是這樣的:需要渲染幀後運行協程
當我做我的協程我不知道渲染多少時間。所以我無法確定我對協程有多少時間的預算,什麼時候放棄它。它可能是20ms,也可能是1ms。
讓我們爲協同執行預留一個固定的時間,比如10ms,並假設目標幀速率爲30,物理時間可以忽略不計。現在,如果渲染需要5ms,那麼5 + 10 = 15ms,我放棄了使用15毫秒的機會。相反,如果幀具有尖峯並花費25ms,則25 + 10 = 35ms,並且大於30FPS目標幀率,導致可見的FPS下降。所以無論哪種方式,持續時間都會有非常糟糕的後果
但是如果我可以在渲染時間之後運行代碼,我可以確切地知道我有多少時間在屏幕刷新並在合適的時機屈服,而不會浪費寶貴的時間或用我自己的雙手創建秒殺的風險! !
我知道代碼按照團結的執行順序http://docs.unity3d.com/Manual/ExecutionOrder.html運行。我需要一種解決方法或任何可行的策略來可靠地進行協程。
也許你可以使用[this。](http://docs.unity3d.com/ScriptReference/WaitForEndOfFrame.html) –
只是一個說明,協程和多線程沒有任何關係, –
@BarışÇırıkaWOW !沒有看到那個。謝謝 –