[英]Unity ParticleSystem Play and Stop
我的particlesystem.Play()
不起作用。 我在这个问题上花了几个小时,但仍然无法弄清楚。
每当我的角色击中一个对象时,它就会调用函数particleAuraPlay()
,并且显示日志消息“HIT”,这意味着该函数被正确调用。
当playAura
设置为 true 时,粒子应该播放,并且再次显示日志消息“Running”。 由于消息显示,我假设我的逻辑是正确的,但粒子不会开始播放。 任何人都可以解决我的问题吗?
using UnityEngine;
using System.Collections;
public class ParticleController : MonoBehaviour {
private bool playAura = false;
private ParticleSystem particleObject;
void Start () {
particleObject = GetComponent<ParticleSystem>();
particleObject.Stop();
}
void Update () {
if (playAura)
{
Debug.Log("Running");
particleObject.Play();
}
}
public void particleAuraPlay()
{
Debug.Log("HIT");
playAura = true;
}
}
当 playAura 设置为 true 时,粒子应该播放,并且再次显示日志消息“Running”。 由于消息显示我认为我的逻辑是正确的但粒子只是不会开始播放
这是一个逻辑错误。
当调用particleAuraPlay()
函数时, playAura
设置为true
。
在更新函数中, particleObject.Play();
由于playAura
为true
每帧都会被调用。
你不能这样做。 调用particleObject.Play();
每一帧实际上不会做任何事情,因为它会尝试在每一帧中播放和停止粒子,导致根本没有粒子。
该解决方案是检查是否playAura
是true
,如果true
,调用particleObject.Play();
函数然后将playAura
设置为false
以便particleObject.Play();
playAura
particleObject.Play();
在再次调用particleAuraPlay()
之前,不会再次调用该函数。
新的Update()
函数修复了逻辑错误:
void Update()
{
if (playAura)
{
Debug.Log("Running");
particleObject.Play();
playAura = false;
}
}
在您的particleAuraPlay() 函数中,您只需要检查您的ParicleSystem 是否正在运行,您可以通过此代码实现此目的...
public void particleAuraPlay(){
if(!particleObject.isPlaying){
particleObject.Play();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.