我无法通过代码更改滑块的值

问题描述 投票:0回答:2

这是变量的代码:

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;

我一段时间以来一直在尝试解决此问题,但我不知道,任何帮助将不胜感激!谢谢!

c# unity3d
2个回答
0
投票

检查您在哪里编写代码。它应该在循环功能中。并检查是否将脚本添加到场景中的对象。并检查您是否对滑块进行了美化。


0
投票

floatvalue类型,NOT引用类型!

执行时

这是我们编辑滑块值的地方:

public void Apple()
{
    hunger = apple.hunger + hunger;
    thirst = apple.thirst + thirst;
    health = apple.health + health;
}

-> 否,不是。您在这里所做的是更新本地字段hungerthirsthealth,但这不会对滑块产生任何影响,除非您分配这些值回到他们那里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;
© www.soinside.com 2019 - 2024. All rights reserved.