Unity 粒子特效 不受Time.deltaTime影響
阿新 • • 發佈:2018-12-25
在單機遊戲中,難免會有暫停遊戲這個功能,但有時候我們不需要遊戲中的特效跟著遊戲也暫停了,這時候我們就需要單獨處理特效的播放了
我們使用Time.realtimeSinceStartup來處理這個問題
Time.realtimeSinceStartup 表示自遊戲開始後的總時間,即使暫停也會不斷的增加。
下面是原始碼,應該都看得懂,我就不詳細說明了
public class ParticleRealtime : MonoBehaviour { private ParticleSystem _particle; private float _deltaTime; private float _timeAtLastFrame; void Start () { _particle = GetComponent<ParticleSystem>(); } void Update () { if (_particle == null) return; _deltaTime = Time.realtimeSinceStartup - _timeAtLastFrame; _timeAtLastFrame = Time.realtimeSinceStartup; //若Time.timeScale等於0,說明遊戲暫停,則讓特效每幀播放,而不受其影響 if (Mathf.Abs(Time.timeScale) ==0) { _particle.Simulate(_deltaTime, false, false); _particle.Play(); } } }