gpt4 book ai didi

c# - Unity Sprite 不按命令更改?

转载 作者:太空宇宙 更新时间:2023-11-03 15:35:45 25 4
gpt4 key购买 nike

这个 Sprite :

enter image description here

应该变成这些 Sprites 之一(取决于加载的那个)

enter image description here

当 Collider (LoseCollider) 与不同的游戏对象接触时:

enter image description here

我的问题是,当 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;
}

我试图发布所有相关信息,如果我需要包含更多信息,请告诉我。

最佳答案

为此您需要停止使用静态。似乎 HealthManager.Health2 从未设置为 null 以外的任何值。如果我正确地解释了您的屏幕截图,您可以在底部照片中看到 Sprite is None。

此外,您的代码似乎表明您确实不希望 HealthManager 属性是静态的。根据您的使用情况,您需要具有独立健康值的真正独立的 HealthManager 实例:

if (HealthManager.totalHealth == 3) {
setSprite();
HealthManager.totalHealth --;

修复 HealthManager 上的所有静态内容,将 HealthManager 的真实实例添加到您的 GameObject 并将其 Health1-3 Sprite 与对您的 Sprite 的真实引用相关联,它应该可以工作。

假设您按上述方式更新 HealthManager,则以下语法是正确的:

gameObject.GetComponent<SpriteRenderer>().sprite = HealthManager.Health2;

关于c# - Unity Sprite 不按命令更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31932194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com