【问题标题】:unity3d - Change Image.fillAmountunity3d - 更改 Image.fillAmount
【发布时间】:2015-05-14 22:11:28
【问题描述】:

我有一个图像作为健康条,我想给它一个大于 1 的 cistume 值:

    public Image healthBar;

    // Use this for initialization
    void Start () {

        float health = 4;

        healthBar.fillAmount = health;
        Debug.Log (gameObject + ""+ healthBar.fillAmount);
    }

问题是无论我给健康值多少,fillAmount总是回到1。有什么办法让它更高吗?

【问题讨论】:

  • FillAmount 表示一个介于 0 (0%) 和 1 (100%) 之间的值,这意味着您需要使用分数。如果你将你的健康计算为 currentHealth/Maxhealth,你会得到一些有用的东西。有关详细信息,请参阅this answer

标签: image unity3d fill


【解决方案1】:

fillAmount 是一个 0-1 的值,在 1 处显示完整的图像。超过 1 的数字还没有行为。

您可以根据最大生命值更改图像的宽度并计算需要填充的百分比。

   healthBar.rectTransform.rect.width = maxHealth * healthBarWidth;
   healthBar.fillAmount = health / maxHealth;

如果您不想要一个条形图,但需要多个图像(如仍部分填充的心),您可以使用在边缘自动截断的平铺图像来实现。

【讨论】:

  • 谢谢,但他们为什么不允许我们将其更改为我们想要的任何内容?我现在要做的方式是将敌人的伤害更改为非常小的数字。
  • 这是因为填充选项并不是真正为此而设计的,在某些情况下没有真正明显的行为,例如径向填充。此外,几乎所有带有健康条的游戏都使用百分比,并根据当前和最大健康来填充它。永远不要真正直接使用 health 变量。
【解决方案2】:

我认为您在创建 heath float 时犯了拼写错误。当你宣布“健康”时,你称之为健康

【讨论】:

  • 其实不,这一定是我在这里发布代码时发生的,在 Mono 中没有错误。我将编辑 OP。
【解决方案3】:
 healthBar.fillAmount += health;

尝试在fillAmount 值中进行增量,因为它会分配您想要的值,然后稍微更改代码以达到确切的数字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 2018-02-02
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多