阻止ParticleSystem一直运行

时间:2015-12-28 07:08:12

标签: javascript c# unity3d

如何停止在场景中作为游戏对象插入的粒子系统始终在运行?

我只有一些想法,但它们还没有起作用。

因此,假设我的Hierarchy of objects中有一个名为Game Object的“ParticleSystem3” - 引用ParticleSystem3并阻止它连续发射的正确方法是什么?

我不明白我发现的例子,因为它们似乎没有给我一个正确的粒子系统参考。

我知道在ParticleSystem标题下的手册中有Play,Pause和Stop功能。如何正确使用它们?我只需要Stop,所以我的问题就是我已经提到的与粒子系统相关的Stop机制。

我用JS(JavaScript)或C#编码。

除了“Google it”之外,你有什么提示吗?我似乎找不到答案,而且我是Unity3d 5.2的新手。

2 个答案:

答案 0 :(得分:0)

你可以:

  1. 使用ParcileSystem禁用GameObject,但我认为它不是您想要的,因为您希望GameObject处于活动状态。

  2. gameObject.GetComponent<ParticleSystem>().enableEmission = false;

  3. gameObject.GetComponent<ParticleSystem>().Stop();

  4. 当你想要粒子系统时,再次发光:

    gameObject.GetComponent<ParticleSystem>().enableEmission = true;
    
    gameObject.GetComponent<ParticleSystem>().Play();
    

答案 1 :(得分:0)

我试过这个但它似乎并没有停止连续发射的粒子系统。其他建议是受欢迎的。如果我找到答案,我可以在这里发布。

void OnCollisionEnter(Collision col)
{

    if(col.gameObject.tag == "bomb")
    {
        // I got hit by a bomb! 
        Instantiate(explosion, col.gameObject.transform.position, Quaternion.identity);

        //ParticleSystem temp = ParticleSystem2;
        //temp.emission.enabled = false;
        ParticleSystem.EmissionModule em = ParticleSystem2.emission; 
        em.enabled = false;
        ParticleSystem2.Stop ();

        gameObject.GetComponent<ParticleSystem>().enableEmission = false;
        gameObject.GetComponent<ParticleSystem>().Stop();

然后几个小时后,我在主摄像机下面创建了一个带有粒子系统游戏对象的空场景,并将一个脚本附加到粒子系统。这是剧本:

using UnityEngine;

使用System.Collections;

public class NewBehaviourScript:MonoBehaviour {

// Use this for initialization
void Start () {
    gameObject.GetComponent<ParticleSystem>().enableEmission = false;
    gameObject.GetComponent<ParticleSystem>().Stop();
}

// Update is called once per frame
void Update () {
    //gameObject.GetComponent<ParticleSystem>().enableEmission = false;
    //gameObject.GetComponent<ParticleSystem>().Stop();
}

}

现在它奏效了。