UI 滑块在播放模式和独立构建(Unity 引擎)中的行为不同

UI Slider acts differently in Play mode and a standalone build (Unity Engine)

我有一个 UI 滑块。当按住鼠标左键时,其值减小。我使用 Input.GetMouseButton(0) 来完成这项工作。该代码工作正常。但是,当我在播放模式(嵌入在 Unity 中)中测试滑块时,它的值比在窗口播放模式(2 秒对 5 秒)中快很多。在 Windows 独立构建中,它变得更慢(15 秒)。我最近在 macOS 上检查了它,问题是一样的。 UI 滑块计时在我的游戏机制中非常重要。

我可以假设这取决于帧率,但播放模式和独立版本都有 150-200 FPS。

GIF that clearly demonstrates the timing difference.

Player.cs

public class Player : MonoBehaviour
{
    public int maxFuel = 1000;
    public int fuelAmount;

    public FuelBar fuelBar;

    void Start()
    {
        fuelAmount = maxFuel;
        fuelBar.SetMaxFuel(maxFuel);
    }

    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            SpendFuel(1);
        }
    }

    void SpendFuel(int fuel)
    {
        fuelAmount -= fuel;
        fuelBar.SetFuel(fuelAmount);
    }
}

FuelBar.cs

public class FuelBar : MonoBehaviour
{
    public Slider fuelBar;

    public void SetMaxFuel(int fuel)
    {
        fuelBar.maxValue = fuel;
        fuelBar.value = fuel;
    }

    public void SetFuel(int fuel)
    {
        fuelBar.value = fuel;
    }
}

提前致谢! :)

将燃料更改为浮动并在更新中乘以 Time.deltaTime

SpendFuel(1f * Time.deltaTime);

可能还想将 1f 更改为更大的值,因为现在是每秒 x。