定时器没有改变精灵

Timer is not changing the sprite

我目前正在开发一款带有精灵效果的游戏。玩家可以在一定时间内更改 "Iceblade"。 2 秒后,我希望效果恢复正常 "Iceblade"。因此,我需要 Unity 中的计时器。我尝试了很长时间,但无法完全完成这项工作。

这是我的示例代码:

if     (other.gameObject.CompareTag("IcePickup"))
{
        Destroy(other.gameObject);
        timer -= Time.deltaTime;
        timer ++;
        Blade1 = GameObject.Find("Blade1");
        Blade1.gameObject.GetComponent<SpriteRenderer>().sprite = IceBlade;
        if (Blade1.gameObject.GetComponent<SpriteRenderer>().sprite = IceBlade)
    {
//i put a timer here but i cant figure out why is isnt working and print isnt showing.
        if (timer > 2)
        {
            Blade1.gameObject.GetComponent<SpriteRenderer>().sprite = BladeNormal;
            print("working");
        }
    }

}

检查它们是否相等你应该这样写

  if (Blade1.gameObject.GetComponent<SpriteRenderer>().sprite == IceBlade)

    timer -= Time.deltaTime;

仅在 other.gameObject.CompareTag("IcePickup") 为真时发生一次 这里

timer -= Time.deltaTime;
        timer ++;

您在增加计时器值的同时减少了它

所以这显然不是计时器。做一个计时器 timer -= Time.deltaTime; 必须在 Update 中调用才能计数,也可以使用 coroutineshere and here 是两种方式的实现