Unity:进度条四舍五入到最接近的整数

时间:2017-04-12 21:07:07

标签: c# unity3d progress-bar

我正在尝试制作计时器进度条。我正在使用滑块UI元素并通过代码更改它的值。然而,似乎该值正在向上舍入到最接近的整数,即使它是浮点而不是int。我这样说是因为在前半段,酒吧已满,下半场是空的。有人可以帮忙吗?感谢。

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;
}

1 个答案:

答案 0 :(得分:3)

time是int,totalTime是int。如果你将两者都分开,那么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;
}

或者这个:

ncfname <- sprintf('ABC%03d.nc', i)

应该有用。