unity动画特效不受timeScale影响

跑酷类游戏会用TimeScale来控制游戏的节奏,当timeScale不为1时,动画和特效播放会受到影响,因此需要写一些脚本去控制动画特效的播放
以下是ParticleSystem的控制类,后续补充Animation和Animator的

思路: Time.unscaledDeltaTime 不受timeScale影响
扩展: 协程yield return new WaitForSeconds也会受到影响,可以改为使用yield return new WaitForSecondsRealtime


ParticleSystem的控制类:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ParticleSystemCtrl : MonoBehaviour
{
	ParticleSystem[] list;

	void Awake()
	{
		Time.timeScale = 0;
		list = GetComponentsInChildren<ParticleSystem>();
	}

	private void Update()
	{
		if (list != null && list.Length > 0)
		{
			foreach (var item in list)
			{
				item.Simulate(Time.unscaledDeltaTime, true, false);
			}
		}
	}

}

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页