这是变量的代码:
public Slider healthSlider;
public Slider thirstSlider;
public Slider hungerSlider;
public float health;
public float hunger;
public float thirst;
这是一个可编写脚本的对象
public Descriptions apple;
我也这样做:
healthSlider.value = health;
thirstSlider.value = thirst;
hungerSlider.value = hunger;
health = Mathf.Clamp(health, 0f, 100f);
thirst = Mathf.Clamp(thirst, 0f, 100f);
hunger = Mathf.Clamp(hunger, 0f, 100f);
这是我们编辑滑块值的地方:
public void Apple()
{
hunger = apple.hunger + hunger;
thirst = apple.thirst + thirst;
health = apple.health + health;
}
我也尝试过这种方法,但是没有用:
public void Apple()
{
hunger += apple.hunger;
thirst += apple.thirst;
health += apple.health;
}
我也尝试过像这样直接访问它,但是没有用:
hungerSlider.value += 0.1f;
我一段时间以来一直在尝试解决此问题,但我不知道,任何帮助将不胜感激!谢谢!
检查您在哪里编写代码。它应该在循环功能中。并检查是否将脚本添加到场景中的对象。并检查您是否对滑块进行了美化。
float
是value类型,NOT引用类型!
执行时
这是我们编辑滑块值的地方:
public void Apple() { hunger = apple.hunger + hunger; thirst = apple.thirst + thirst; health = apple.health + health; }
-> 否,不是。您在这里所做的是更新本地字段hunger
,thirst
和health
,但这不会对滑块产生任何影响,除非您分配这些值回到他们那里hungerSlider.value = hunger;
也
我也尝试过像这样直接访问它,但是没有用:
hungerSlider.value += 0.1f;
嗯,从您的夹紧力出发,我假设您的滑块从0
变为100
,所以0.1f
的变化几乎不会引起注意,因为它只是滑块总范围的1/1000。
它可能应该是类似的东西
public void Apple()
{
hungerSlider.value += apple.hunger;
thirstSlider.value += apple.thirst;
healthSlider.value += apple.health;
}
根本不使用您的本地字段来镜像滑块值,它们只会引起混淆。除非您对一个值进行大量更改/计算,否则您将在仅存在于该方法内部的局部变量中进行更改/计算,然后一次性将其分配回滑块属性,例如]
var hunger = hungerSlider.value;
hunger += apple.hunger;
hunger = Mathf.Clamp(hunger, 0, 100);
hungerSlider.value = hunger;