粒子系统不通过代码播放

问题描述 投票:0回答:4

我正在使用这种方法并尝试了其他一些方法但无法播放粒子系统(即子弹壳)。

public ParticleSystem particleSystem; 

void Start() {
    particleSystem = GetComponent<ParticleSystem>();
}

void Update() {
    particleSystem.Play();
} 
c# unity3d
4个回答
0
投票

不要将播放触发器放在 MonoBehaviour 的 Update() 中,因为它会在每一帧调用播放。

尝试这样的事情:

public ParticleSystem particleSystem; 
private bool isPlaying = false;

void Start() {
    particleSystem = GetComponent<ParticleSystem>();
    particleSystem.Clear();    // Reset the particles
}

void Update() {
    if(!isPlaying) {
        particleSystem.Play();
        isPlaying = true;
    }
}

在调用 particleSystem.Play() 之前使用 particleSystem.Clear() 也有助于解决粒子问题。

停止和播放粒子系统的最简单方法是停用和激活粒子系统游戏对象。为此,必须将控制脚本放在父对象或单独的对象中。


0
投票

您必须确保它尚未播放,否则您将重置它

void Update() {
    if(!particleSystem.isPlaying) particleSystem.Play();
}

0
投票

好吧,经过几个小时的麻烦,我发现操纵粒子系统的最好方法,即激活和激活你的意志是创建一个空的游戏对象,将你制作的粒子系统分配给它,然后准确地在哪个部分打开和关闭这个游戏对象在您想要的代码中通过 setActivce 命令。我希望它能以某种方式帮助某人


0
投票

我发现 ParticleSystem 组件不喜欢被禁用和启用,例如当被放入游泳池并再次取回时。

从池中检索它们并激活它们的 GameObject 后,调用 .Play() 或 .Stop() 什么都不做。我必须延迟对 .Play() 的调用(或 .Stop() 如果使用 PlayOnAwake = true 并且我希望它开始停止)直到下一次更新,以确保 ParticleSystem 实际上设置为预期状态,或者使用协同程序或在更新中进行连续检查。

© www.soinside.com 2019 - 2024. All rights reserved.