我使用这种方法,并尝试了一些其他的,以及但无法发挥粒子系统(即子弹壳)。
public ParticleSystem particleSystem; void Start() { particleSystem = GetComponent<ParticleSystem>(); } void Update() { particleSystem.Play(); }
eagi6jfj1#
不要将播放触发器放在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()也有助于解决粒子问题。停止和玩粒子系统最简单的方法是去激活和激活粒子系统游戏对象。要做到这一点,控制脚本必须放置在父对象或单独的对象中。
r8xiu3jd2#
你必须确保它还没有播放,否则你会重置它
void Update() { if(!particleSystem.isPlaying) particleSystem.Play(); }
mwg9r5ms3#
好吧,经过几个小时的麻烦,我发现操纵粒子系统的最好方法是创建一个空的游戏对象,分配你所做的粒子系统,然后在代码中你想要的部分通过setActivce命令打开和关闭这个游戏对象。我希望它能在某种程度上帮助别人
xfb7svmp4#
我发现ParticleSystem组件不喜欢被禁用和启用,例如,当被放入池中并再次检索时。在从池中取回它们并激活它们的游戏对象后,调用.Play()或.停止()就是不做任何事情.我不得不延迟调用.Play()(或者.Stop(),如果使用PlayOnAwake = true并且我希望它开始停止)直到下一次更新,以确保ParticleSystem实际上被设置为预期状态,或者使用协程,或者在Update中进行连续检查。
4条答案
按热度按时间eagi6jfj1#
不要将播放触发器放在MonoBehaviour的Update()中,因为它会在每一帧上调用播放。
试试这样的方法:
在调用particleSystem.Play()之前使用particleSystem.Clear()也有助于解决粒子问题。
停止和玩粒子系统最简单的方法是去激活和激活粒子系统游戏对象。要做到这一点,控制脚本必须放置在父对象或单独的对象中。
r8xiu3jd2#
你必须确保它还没有播放,否则你会重置它
mwg9r5ms3#
好吧,经过几个小时的麻烦,我发现操纵粒子系统的最好方法是创建一个空的游戏对象,分配你所做的粒子系统,然后在代码中你想要的部分通过setActivce命令打开和关闭这个游戏对象。我希望它能在某种程度上帮助别人
xfb7svmp4#
我发现ParticleSystem组件不喜欢被禁用和启用,例如,当被放入池中并再次检索时。
在从池中取回它们并激活它们的游戏对象后,调用.Play()或.停止()就是不做任何事情.我不得不延迟调用.Play()(或者.Stop(),如果使用PlayOnAwake = true并且我希望它开始停止)直到下一次更新,以确保ParticleSystem实际上被设置为预期状态,或者使用协程,或者在Update中进行连续检查。