关注

我需要两个相同行为相同的粒子系统

问题

  • 当创建两个或多个粒子系统时,即使有相同的属性设置,它们的行为也不同。

原因

这种情况只有在粒子系统中使用了随机范围时才会发生。随机范围由粒子Random Seed决定。

解决方案

可以创建一个脚本(或使用下面的示例脚本),通过ParticleSystem.randomSeed手动设置Random Seed来解决这个问题。 这可以保证随机结果是相同的。

 

在下面GIF中,看起来像阴影的粒子实际上是空粒子的副本,两者使用相同的随机数。

您可以使用此脚本指定setSeedParticles以设置粒子系统的Random Seed。

using UnityEngine;
using System.Collections;

[ExecuteInEditMode]
public class SetParticleSeed : MonoBehaviour {

    public ParticleSystem[] setSeedParticles;
    public int ParticleSeed;
    public bool forceNewSeed;

    void Start () {
        if (setSeedParticles.Length > 0) {
            for(int i = 0; i < setSeedParticles.Length; i++) {
                setSeedParticles[i].randomSeed = (uint) ParticleSeed;
            }
        }  
    }

     void Update () {
        if (forceNewSeed) {
            ParticleSeed = Random.Range(0,int.MaxValue);
            Debug.Log("Particle seed: " + ParticleSeed);

            if (setSeedParticles.Length > 0) {
                for(int i = 0; i < setSeedParticles.Length; i++) {
                    setSeedParticles[i].randomSeed = (uint) ParticleSeed;
                }
            }

             forceNewSeed = false;
        }
    }
}

更多信息

Random Particle Seed - http://docs.unity3d.com/ScriptReference/ParticleSystem-randomSeed.html

这篇文章有帮助吗?
0 人中有 0 人觉得有帮助
还有其它问题?提交请求

0 评论

登录写评论。