【问题标题】:Unable to get new unity particle system code working post update无法获得新的统一粒子系统代码工作后更新
【发布时间】:2018-03-22 04:27:45
【问题描述】:

我曾经使用过以下粒子系统。

// In the inspector I drag in the leaf particle system.
public ParticleSystem LeafStormParticleSystem;

private IEnumerator activate(float ActivateFor) {
    //Change number of particles to 150
    LeafStormParticleSystem.maxParticles = 150;

    //  LeafStormParticleSystem.
    var newEmission = LeafStormParticleSystem.emission;
    var rate = newEmission.rate; 
    rate.constantMin = 20;
    rate.constantMax = 21;
    newEmission.rate = rate; 

现在您可能已经知道,这个简单的方法增加了粒子的数量。现在,这曾经可以工作,并且可能因为我一直在阅读的新粒子系统而无法工作。

但是,在这个新的粒子系统上,我有一个问题和问题要让它工作。

问题

如果我错了,请纠正我,但粒子系统定义如下

void Start()
{
    ParticleSystem ps = GetComponent<ParticleSystem>();
    var main = ps.main;

    main.startDelay = 5.0f;
    main.startLifetime = 2.0f;
}

现在,如果我有 3 个粒子系统,我如何指定我指的是哪一个?既然我不能把它定义为公共的,再在编辑器中把粒子系统拖到它上面?

问题 B

现在我尝试遵循统一在他们的论坛中所说的内容并做了以下操作

ParticleSystem ps = GetComponent<ParticleSystem>();
var main = ps.main;

main.maxParticles = 150;
//  LeafStormParticleSystem.maxParticles = 150;

do not create your own module instances, get them from a ParticleSystem instance UnityEngine.ParticleSystem+MainModule.set_maxParticle

对问题 A 和 B 的任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    问题 A

    一次只能将一个 ParticleSystem 组件附加到任何一个 GameObject。因此,子粒子系统也必须附加到单独的游戏对象(通常是拥有第一个粒子系统的游戏对象的子对象),可以直接拖放到公共字段上。

    public ParticleSystem LeafStormParticleSystem;
    
    void Start ()
    {        
        if (LeafStormParticleSystem != null)
        {
            var main = LeafStormParticleSystem.main;
            main.maxParticles = 150;
        }
    }
    

    问题 B

    您的代码看起来不错,但是缺少错误消息的关键部分; NullReferenceException 告诉您代码中的引用等于 NULL。在您的情况下,该引用将是用于存储 ParticleSystem 引用的 ps 变量,这是未将此脚本附加到持有您的 ParticleSystem 的游戏对象的结果,或者只是您根本没有附加 ParticleSystem。在任何一种情况下,请确保脚本和 ParticleSystem 都附加到同一个游戏对象,并像这样检查您的引用;

    void Start ()
    {
        ParticleSystem ps = GetComponent<ParticleSystem>();
    
        if (ps != null)
        {
            var main = ps.main;
            main.maxParticles = 150;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      相关资源
      最近更新 更多