在单机游戏中,难免会有暂停游戏这个功能,但有时候我们不需要游戏中的特效跟着游戏也暂停了,这时候我们就需要单独处理特效的播放了
我们使用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();
}
}
}