bub*_*ibu 6 c# unity-game-engine
我的particlesystem.Play()不行。我在这个问题上花了几个小时,但仍然无法弄清楚。
每当我的角色击中一个物体时,它就会调用该函数particleAuraPlay(),并且显示日志消息“HIT”,这意味着该函数正在正确调用。
当playAura设置为 true 时,粒子应该播放,并且日志消息“正在运行”也会再次显示。由于消息显示,我认为我的逻辑是正确的,但粒子只是不会开始播放。有人可以解决我的问题吗?
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;
}
}
Run Code Online (Sandbox Code Playgroud)
当 playAura 设置为 true 时,粒子应该播放,并且日志消息“正在运行”也会再次显示。由于消息显示,我认为我的逻辑是正确的,但粒子只是不会开始播放
这是一个逻辑错误。
当particleAuraPlay()函数被调用时,playAura 被设置为true。
在更新函数中,将在每一帧particleObject.Play();调用,因为是。playAuratrue
你不能这样做。调用particleObject.Play(); 每一帧实际上不会执行任何操作,因为它会尝试播放并停止每一帧中的粒子,从而导致根本没有粒子。
解决方案是检查 if playAurais true, if true,调用该particleObject.Play();函数然后设置playAura为false,以便该particleObject.Play();函数不会再次被调用,直到particleAuraPlay()再次调用。
新Update()函数修复了逻辑错误:
void Update()
{
if (playAura)
{
Debug.Log("Running");
particleObject.Play();
playAura = false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18349 次 |
| 最近记录: |