如果使用TimeScale控制游戏的慢镜头
那么TrailRenderer会出现残留在屏幕上的时间过长的问题
使用下面代码可以使TrailRenderer 不受TimeScale影响
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TrailRenderController : MonoBehaviour
{
private TrailRenderer[] trailRenderers;
private float[] originalTimes;
private float laseTimeScale = 1;
private void Awake()
{
trailRenderers = GetComponentsInChildren<TrailRenderer>();
originalTimes = new float[trailRenderers.Length];
for (int i = 0; i < trailRenderers.Length; i++)
{
var tr = trailRenderers[i];
originalTimes[i] = tr.time;
}
}
private void Update()
{
if (laseTimeScale != Time.timeScale)
{
if (Time.timeScale < 1)
{
for (int i = 0; i < trailRenderers.Length; i++)
{
var tr = trailRenderers[i];
tr.time = Time.timeScale * originalTimes[i];
Debug.LogError(tr.gameObject.name + " " + Time.timeScale + "x" + originalTimes + " = " + tr.time);
}
}
else
{
for (int i = 0; i < trailRenderers.Length; i++)
{
var tr = trailRenderers[i];
tr.time = originalTimes[i];
}
}
laseTimeScale = Time.timeScale;
}
}
}