明明有粒子系统了为什么还要用脚本来模拟呢?当然是存在一些特殊情况钻了粒子系统的死角,无法使用粒子,所以才会使用,例如UI
1,曲线类——通常最常见的情况就是需要通过曲线来控制某个值,达到类粒子系统的效果,下面是一段伪代码示例
public class Test : MonoBehaviour { public AnimationCurve Curve; //需要曲线 public Material mat; //需要传入参数的对象 public float TimeFrequency = 1.0f; //曲线时间的频率,用来缩短或加长时间频率 private float time; void Start() { time = 0.0f; //初始化曲线时间 } void Update() { if(XX.enabled) //这里的XX可以是你需要开关的物体的属性 { time += Time.deltaTime * frequency; // time %= endtime;//loop如需循环 float CurveValue = FlashCurve.Evaluate(time); //得到曲线值 mat.SetFloat("_XXX", CurveValue); //赋予对象shader的参数_XXX } else time = .0f; //下次重新启动时归零 }
2,开关类——我平时会碰到需要无缝衔接两个或以上粒子系统的需求,同时又要保证随机,所以我会通过脚本函数OnEable来控制这些粒子系统的随机种子,保证一次开启的时候所有粒子显示的内容都是一样的,同时每一次开启种子又不一样
public class Test : MonoBehaviour { public ParticleSystem ps1; public ParticleSystem ps2; public ParticleSystem ps3; ....... void OnEnable() { ps1.randomSeed = ps2.randomSeed = ps3.randomSeed = (uint)Random.Range(-100000, 100000); }
标签:粒子系统,脚本,简单,void,曲线,time,public,ParticleSystem From: https://www.cnblogs.com/teriffica/p/17936546.html