这个精灵:
应该更改为其中一个Sprite(取决于加载的那个)
当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;
}
我试图发布所有相关信息,如果我需要包含更多信息,请告诉我。
答案 0 :(得分:0)
您需要停止使用静态。似乎HealthManager.Health2永远不会设置为除null之外的任何内容。如果我正确地解释你的截图,你可以看到底部镜头中的Sprite是None。
此外,您的代码似乎表明您确实不希望HealthManager属性是静态的。您希望HealthManager的实际单独实例具有基于您的用法的独立健康值:
if (HealthManager.totalHealth == 3) {
setSprite();
HealthManager.totalHealth --;
Nix HealthManager上的所有静态内容,将一个真实的HealthManager实例添加到您的GameObject中,并将它的Health1-3精灵与您的精灵的实际引用相关联,它应该可以工作。
假设您如上所述更新HealthManager,以下语法是正确的:
gameObject.GetComponent<SpriteRenderer>().sprite = HealthManager.Health2;