我有一个附有粒子系统的预制件。在代码中我使用此代码
播放粒子 ps.enableEmission = true;
当我运行游戏并执行该代码时,粒子发射器不会在"游戏中发出任何内容。窗口,除非我在"场景中按下模拟按钮"窗口。
有谁知道为什么?
答案 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
属性,那么它将阻止额外粒子的发射,但它不会破坏任何已发射的粒子。
另一种方法是使用Play
和Stop
方法,但这些方法与emission
属性一样,不会销毁任何活动粒子。如果您使用这些方法,那么需要注意的一些事项是:
Prewarm
选项,则Play
无法启动
发射粒子(不知道为什么会发生这种情况)isPlaying
属性将保持true
场景中的活动粒子。一旦这些死亡,它就会
设置为false
Stop
方法不会破坏场景中活动的粒子ParticleSystem
已停止,并且在粒子处于活动状态时调用Play
在场景中,然后所有活动的粒子都被破坏了
ParticleSystem
开始发布一组新的粒子答案 1 :(得分:0)
当你调用ps.enableEmission = true时,检查粒子GameObject是否处于活动状态;在上面。要显示或隐藏粒子,我通常使用gameObject.setActive()而不是ps.enableEmission。
答案 2 :(得分:0)