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。
我有一个 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。