这个雪碧:
应该变成这些精灵中的一个(取决于加载的精灵)
当Collider(LoseCollider)与另一个游戏对象联系时:
我的问题是,当LoseCollider被触发时,Spite没有改变,并且没有任何错误被抛向我 .
相关代码是:
HealthManager.cs
public static Sprite[] healthSprites;
public static int totalHealth = 3;
public static Sprite Health1;
public static Sprite Health2;
public static Sprite Health3;
LoseCollider.cs
void OnTriggerEnter2D (Collider2D trigger) {
if (HealthManager.totalHealth == 3) {
setSprite();
HealthManager.totalHealth --;
} else {
levelManager = GameObject.FindObjectOfType<LevelManager>();
levelManager.LoadLevel("Lose");
}
}
void setSprite () {
gameObject.GetComponent<SpriteRenderer>().sprite = HealthManager.Health2;
}
我试图发布所有相关信息,如果我需要包含更多信息,请告诉我 .
1 回答
你需要停止使用静态 . 似乎HealthManager.Health2永远不会设置为除null之外的任何内容 . 如果我正确地解释你的截图,你可以看到底部镜头中的Sprite是None .
此外,您的代码似乎表明您确实不希望HealthManager属性是静态的 . 您希望HealthManager的实际单独实例具有基于您的用法的独立 Health 值:
Nix HealthManager上的所有静态内容,将一个真实的HealthManager实例添加到您的GameObject中,并将它的Health1-3精灵与您的精灵的实际引用相关联,它应该可以工作 .
假设您如上所述更新HealthManager,以下语法是正确的: