2016-09-20 32 views
0

以下脚本会对我的敌人预制装置造成伤害,但其上方的健康状况与其当前的健康状况不符。它不会更改其各自的健康栏,而只会更改层次结构窗口中预制件的第一个实例。不过,当施加正确数量的伤害时,敌人仍然会被摧毁。需要注意的是,健康栏图像是画布的子项,而画布是附着了脚本的主要预制件的子项。我怎样才能解决这个问题?独立工作的生命线条

using UnityEngine; 
using System.Collections; 

public class EnemyHealth : MonoBehaviour { 
    private float curHealth = 100f; 
    private float GunDamage; 
    private GameObject hb; 
    private GameObject gd; 
    private GameObject canvas; 
    public float maxHealth; 
    public string gunType; 

void Start() { 
    canvas = GameObject.Find ("HealthCanvas"); 
    hb = GameObject.Find ("HealthBar"); 
    gd = GameObject.Find (gunType); 
    GunDamage = gd.GetComponent<Shoot>().bulletDamage; 
} 

public void SubtractHealth(float howMuch){ 
    curHealth = curHealth - howMuch; 
    if (curHealth <= 0) { 
     Destroy (this.gameObject); 
    } 

    //Update health bar 
    hb.GetComponent<RectTransform>().sizeDelta = new Vector2 (hb.GetComponent<RectTransform>().sizeDelta.x - 0.95f/maxHealth * GunDamage , hb.GetComponent<RectTransform>().sizeDelta.y); 
    Debug.Log (curHealth); 
    } 
} 

回答

1
canvas = this.transform.FindChild ("HealthCanvas").gameObject; 
hb = canvas.transform.FindChild ("HealthBar").gameObject;