Unity:进度条四舍五入到最接近的整数
Unity: Progress Bar rounding to nearest whole number
我正在尝试制作一个计时器进度条。为此,我使用了一个滑块 UI 元素,并通过代码更改了它的值。但是,该值似乎四舍五入到最接近的整数,即使它是浮点数而不是整数。我这样说是因为前半段时间酒吧是满的,后半段时间是空的。谁能帮忙?谢谢
public int totalTime = 4;
int time = 4;
public Slider clock;
// Use this for initialization
void Start () {
time = totalTime;
clock.value = CalculateTime();
StartCoroutine(Timer());
}
IEnumerator Timer()
{
yield return new WaitForSeconds(1);
time = time - 1;
clock.value = CalculateTime();
if (time != 0)
{
StartCoroutine(Timer());
}
else
{
Fin();
}
}
float CalculateTime()
{
return time / totalTime;
}
time
是整数,totalTime
是整数。如果将两者相除,结果是 int
而不是 float
。'' 其余结果将被丢弃。
要真正得到 float
,您必须在除法期间将 int
转换为 float
。
至少,你潜水的两个数字之一必须是float
才能得到float
。
这个:
float CalculateTime()
{
return (float)time / totalTime;
}
这个:
float CalculateTime()
{
return time / (float)totalTime;
}
或者这个:
float CalculateTime()
{
return (float)time / (float)totalTime;
}
应该可以。
我正在尝试制作一个计时器进度条。为此,我使用了一个滑块 UI 元素,并通过代码更改了它的值。但是,该值似乎四舍五入到最接近的整数,即使它是浮点数而不是整数。我这样说是因为前半段时间酒吧是满的,后半段时间是空的。谁能帮忙?谢谢
public int totalTime = 4;
int time = 4;
public Slider clock;
// Use this for initialization
void Start () {
time = totalTime;
clock.value = CalculateTime();
StartCoroutine(Timer());
}
IEnumerator Timer()
{
yield return new WaitForSeconds(1);
time = time - 1;
clock.value = CalculateTime();
if (time != 0)
{
StartCoroutine(Timer());
}
else
{
Fin();
}
}
float CalculateTime()
{
return time / totalTime;
}
time
是整数,totalTime
是整数。如果将两者相除,结果是 int
而不是 float
。'' 其余结果将被丢弃。
要真正得到 float
,您必须在除法期间将 int
转换为 float
。
至少,你潜水的两个数字之一必须是float
才能得到float
。
这个:
float CalculateTime()
{
return (float)time / totalTime;
}
这个:
float CalculateTime()
{
return time / (float)totalTime;
}
或者这个:
float CalculateTime()
{
return (float)time / (float)totalTime;
}
应该可以。