因此,我有一个以0填充开始的图像。然后,布尔值为true时,它将运行一些将图像填充到特定数量的代码。我的问题是我要添加一个条件来检查是否满足填充量,但是填充量超出了最大数量。
private void Update() {
if (update) {
if (icon.fillAmount < icon.fillAmount + amount) {
icon.fillAmount += amount * Time.deltaTime;
Debug.Log(icon.fillAmount);
} else update = false;
}
}
在我的代码中,我有一个更新布尔值,当它为true时,它将检查填充量是否小于最大填充量。如果那是错误的,那么它将运行一行代码以平稳地增加填充量,然后记录填充量,否则将更新布尔值更改为false。但是,例如,如果amount = 0.5f
,当我登录fillAmount
时,它会覆盖amount
。我认为这与Time.deltaTime
有关,但我不知道如何解决。
答案 0 :(得分:0)
使用Mathf.MoveTowards
实现您想要的。根据Unity3D documentation,此功能:
将当前值移动到目标。
这与Mathf.Lerp本质上相同,但是该函数 将确保速度不会超过maxDelta 。的负值 maxDelta将值推离目标。
if (update) {
if (icon.fillAmount < 1) {
icon.fillAmount = Mathf.MoveTowards(icon.fillAmount, 1, amount * Time.deltaTime);
Debug.Log(icon.fillAmount);
} else update = false;
}