Unity粒子系统仅在我按下SIMULATE按钮时播放

时间:2016-02-24 00:55:58

标签: unity3d

我有一个附有粒子系统的预制件。在代码中我使用此代码

播放粒子
                ps.enableEmission = true;

当我运行游戏并执行该代码时,粒子发射器不会在"游戏中发出任何内容。窗口,除非我在"场景中按下模拟按钮"窗口。

有谁知道为什么?

3 个答案:

答案 0 :(得分:1)

为了使发射特性发挥作用,粒子系统必须实际上正在发挥作用。为此,您可以在Play On Awake组件中启用ParticleSystem,也可以在Play组件的实例上使用ParticleSystem方法。

作为旁注,如果您使用的是5.3+,enableEmission属性现已过时,您可能需要考虑使用emission属性。使用此属性时要记住的一件事是在尝试修改变量之前必须将其分配给变量:

public ParticleSystem _ps;
...    
private void Update()
{
    ParticleSystem.EmissionModule module = _ps.emission;
    module.enabled = true;
}

更新#1

为了回应评论中的拖拉机梁示例,我建议在具有SetActive组件的游戏对象上使用ParticleSystem。通过使用SetActive,它将防止发出额外的粒子,并将破坏任何活动的,即当前在场景中的那些。

如果使用Emission属性,那么它将阻止额外粒子的发射,但它不会破坏任何已发射的粒子。

另一种方法是使用PlayStop方法,但这些方法与emission属性一样,不会销毁任何活动粒子。如果您使用这些方法,那么需要注意的一些事项是:

  • 如果未启用Prewarm选项,则Play无法启动 发射粒子(不知道为什么会发生这种情况)
  • isPlaying属性将保持true 场景中的活动粒子。一旦这些死亡,它就会 设置为false
  • Stop方法不会破坏场景中活动的粒子
  • 如果ParticleSystem已停止,并且在粒子处于活动状态时调用Play 在场景中,然后所有活动的粒子都被破坏了 ParticleSystem开始发布一组新的粒子

答案 1 :(得分:0)

当你调用ps.enableEmission = true时,检查粒子GameObject是否处于活动状态;在上面。要显示或隐藏粒子,我通常使用gameObject.setActive()而不是ps.enableEmission。

答案 2 :(得分:0)

enter image description here

我的粒子没有进行模拟,将剔除模式更改为“自动”后,一切正常。默认值为暂停和追赶。