Unity 時間縮放狀態下的特效播放


   時間縮放狀態下,比如 Time.timeScale 縮小為 0 或者 0.000001 等極小值時,若想將特效的播放速度放大相同的倍數,即修改 ParticleSystem.playbackSpeed / Time.timeScale,非循環播放特效仍然無法正常播放(這可能是 Unity5.3.1的問題),依然高速瞬間播完,但是對於無限循環播放類型的特效沒有影響,目前解決的方式就是給在時間縮放狀態下的特效添加腳本,在 Update 里面,每幀運行 ParticleSystem.Simulate(),參數為:Time.deltaTime 或者 Time.unscaledDeltaTime,識具體情況而定。

  此外某些特效在播放一次后設置為非激活狀態,再次激活也無法正常播放,也可以使用這個解決方案。
  注意:ParticleSystem.Simulate( float t, bool withChildren, bool restart) 這個接口會產生大量的GC,我也是在實際使用中發現;不過有個方法可以在使用時盡量減少GC,就是只在根節點添加這個腳本,同時保證腳本被添加在唯一的特效根節點上,給第二個參數 withChildren 設置為 true;否則每個特效組件都必須添加一個這個腳本並運行 Simulate,查看下 profile 里的 GC,可能一個特效隨便每幀產生1-2kb,這個還是很難接受的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM