怪异的健康专栏

时间:2019-01-20 09:02:01

标签: unity3d

我正在尝试实例化我的单元上的健康栏,问题是在第一波单元的“画布”上重复实例化了健康栏,而其他两个波则获得了空画布。 该脚本在单位预制件上。 我要在单独的脚本中实例化单元和运行状况栏。 我不明白我在做什么错。

这是屏幕截图: Example screenshot

private Transform player;
private Image healthBar;
private Image barFilled;
public GameObject hpBarPrefab;

void Start()
{     
    minionExp = GetComponent<MinionExperience>();
    initialHealth = MaxHealth;
    healthBar = Instantiate(hpBarPrefab, 
    GameObject.FindObjectOfType<Canvas>().transform).GetComponent<Image>();
    barFilled = new List<Image>(healthBar.GetComponentsInChildren<Image>()).Find(img => img != healthBar);
}

public void TakePlayer(Transform pl0)
{
    player = pl0;
}

public Transform GetPlayer()
{
    return player;
}

public void MinionsTakeDmg(int dmg)
{
    MaxHealth -= dmg;
    if (MaxHealth <= 0)
    {
        Destroy(gameObject);
        MaxHealth = 0;
        if (player != null)
            player.GetComponent<Levels>().GainExp(minionExp.MaxMinionExp);
    }
    UpdateHealthBar();
}

public void UpdateHealthBar()
{
    float fa = MaxHealth / initialHealth;
    if (healthBar != null)
        healthBar.fillAmount = fa;
}

2 个答案:

答案 0 :(得分:2)

GameObject.FindObjectOfType<Canvas>()搜索整个场景,改用FindComponentInChildrentransform.Find

答案 1 :(得分:0)

已修复。只需使用公共图像并在其上拖动我的健康栏图像即可,现在效果很好:)

  ↳ android.content.Context
      ↳ android.content.ContextWrapper
          ↳ android.view.ContextThemeWrapper
              ↳ android.app.Activity