无法调用Invoke

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

我已经在这个问题上苦苦挣扎了几个小时,但仍然无法弄清楚,所以有人可以帮助我解决这个问题吗?

我的调用方法没有执行任何操作。这是我的代码:

void Update()
    {
        transform.position = Vector3.MoveTowards(robot.transform.position, player.transform.position, speed);
         if(hitNum <= 0){
            Invoke(nameof(Effects), 2.0f);
        }
       
    }

// Damage Function

 public void Damage(float damage){
        hitNum -= damage;
        scr.SetHealth(hitNum,max);
        
       
    }

// Particle System

 public void Effects(){
    
         foreach (var fireworks in fireworks)
        {
            fireworks.Play(); 
         
        }

}

我试图在玩家击败机器人后添加一些粒子,但它不起作用

c# unity-game-engine 2d 2d-games
1个回答
0
投票

您提供的代码看起来是正确的。但如果没有提供完整的脚本,就很难说。请确保下次发布您的完整脚本,并更好地解释您的问题,而不仅仅是“它不起作用”

  • 首先确保您的代码不会引发任何错误
  • 确保您的
    Time.timeScale
    未设置为零 (
    print(Time.timeScale)
    )
  • 通过在
    hitNum <= 0
    方法
    之前打印来确保 
    Invoke
  • 条件为真
  • 如果是 true,那么
    Effects
    方法应该在 2 秒内被调用,确保它也被调用,尽管我没有看到任何不被调用的理由
  • 确保
    fireworks
    集合不为空(如果为空,则会抛出错误)
  • 确保那些
    ParticleSystems
    在场景中并查看它们是否已播放 调试起来也不应该那么困难。希望对您有一点帮助!
© www.soinside.com 2019 - 2024. All rights reserved.