我正在尝试实例化我的单元上的健康栏,问题是在第一波单元的“画布”上重复实例化了健康栏,而其他两个波则获得了空画布。 该脚本在单位预制件上。 我要在单独的脚本中实例化单元和运行状况栏。 我不明白我在做什么错。
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;
}
答案 0 :(得分:2)
GameObject.FindObjectOfType<Canvas>()
搜索整个场景,改用FindComponentInChildren
或transform.Find
。
答案 1 :(得分:0)
已修复。只需使用公共图像并在其上拖动我的健康栏图像即可,现在效果很好:)
↳ android.content.Context
↳ android.content.ContextWrapper
↳ android.view.ContextThemeWrapper
↳ android.app.Activity